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으로 반환하는 기본 뷰 함수를 작성했습니다.
- HTML 렌더링 뷰:
- 템플릿을 통해 데이터베이스의 데이터를 HTML로 보여줍니다.
def article_list_html(request): articles = Article.objects.all() context = {"articles": articles} return render(request, "articles/article_list.html", context)
- 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로 확장할 로드맵:
- 기존 JSON 반환 로직을 DRF Serializer로 변환.
- DRF의 APIView를 활용해 CRUD 기능 구현.
- DRF의 ModelViewSet과 Router를 사용해 코드 최적화.
어려움 난 모르겠음
'TIL' 카테고리의 다른 글
내일배움캠프 본캠프 32일차 - DJANGO 프로젝트 워크플로우 (0) | 2025.01.10 |
---|---|
내일배움캠프 본캠프 32일차 - Django의 모델 관계, 다대다 예시 (0) | 2025.01.09 |
내일배움캠프 본캠프 30일차 - DRF가 뭐죠? (0) | 2025.01.07 |
내일배움캠프 본캠프 29일차 - 혼동행렬 (0) | 2025.01.06 |
내일배움캠프 5주차 WIL (3) | 2025.01.03 |
reply