View

1. Django 프로젝트 구조 점검

URL 구성

  • babo/urls.py:
    • 프로젝트의 루트 URL 설정을 점검했습니다.
    • api/v1/articles/로 articles.urls를 포함하여 URL 라우팅을 설정했습니다.
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),  # 단순 HTML 뷰
    path('hello/', views.hello),  # 데이터 전달 테스트 뷰
    path("api/v1/articles/", include("articles.urls")),  # articles 앱 URL 연결
]
  • articles/urls.py:
    • 앱별 URL 설정을 점검했습니다.
    • HTML 렌더링 뷰와 JSON 데이터를 반환하는 뷰를 URL에 매핑했습니다.
urlpatterns = [
    path("html/", views.article_list_html, name="article_list_html"),
    path("json-01/", views.json_01, name="json_01"),
]

뷰 함수

  • Django에서 데이터를 HTML 또는 JSON으로 반환하는 기본 뷰 함수를 작성했습니다.
  1. HTML 렌더링 뷰:
    • 템플릿을 통해 데이터베이스의 데이터를 HTML로 보여줍니다.
    def article_list_html(request):
        articles = Article.objects.all()
        context = {"articles": articles}
        return render(request, "articles/article_list.html", context)
    
  2. JSON 반환 뷰:
    • 데이터를 JSON 형식으로 반환합니다.
    def json_01(request):
        articles = Article.objects.all()
        json_articles = [
            {
                "title": article.title,
                "content": article.content,
                "created_at": article.created_at,
                "updated_at": article.updated_at,
            }
            for article in articles
        ]
        return JsonResponse(json_articles, safe=False)
    

2. JSON 데이터 처리

  • JSON 데이터를 반환하는 기본 로직을 작성하고, 이를 DRF로 확장하기 위한 기반을 마련했습니다.
  • DRF에서 데이터를 처리하기 전에, JsonResponse로 데이터를 수동으로 반환하는 방식부터 연습했습니다.

3. Django 모델 및 데이터 확인

Article 모델

  • 프로젝트에 데이터베이스 모델이 제대로 설정되어 있는지 점검하고, 예제를 통해 데이터를 추가했습니다.
class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

데이터 추가

  • Django Admin 또는 Shell을 활용해 테스트 데이터를 추가했습니다.
Article.objects.create(title="Test Article 1", content="This is a test article.")
Article.objects.create(title="Test Article 2", content="Another test article.")

4. 문제 해결 과정

  • URL 설정:
    • 올바른 경로를 설정하고 라우팅 문제를 점검했습니다.
  • 뷰 함수 디버깅:
    • JSON 반환 로직에서 발생한 문제를 점검하고 수정했습니다.
  • 템플릿 경로 확인:
    • 템플릿이 올바른 디렉토리에 있는지 확인했습니다.

5. DRF로 확장 준비

  • DRF로 확장할 로드맵:
    1. 기존 JSON 반환 로직을 DRF Serializer로 변환.
    2. DRF의 APIView를 활용해 CRUD 기능 구현.
    3. DRF의 ModelViewSet과 Router를 사용해 코드 최적화.

 

어려움 난 모르겠음

Share Link
reply
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31