Django에서는 템플릿을 사용해서 간단한 html을 구현할 수 있습니다. template 폴더에 html파일을 만들고 불러오는 방식으로 사용할 수 있는데 이때 HttpResponse를 사용해서 불러오는 방법도 있지만 render함수를 사용해서 더 간단하게 구현할 수 있습니다.
render()
def index(request):
latest_question_list = Question.objects.order_by("-pub_date")[:5]
template = loader.get_template("polls/index.html")
context = {
"latest_question_list": latest_question_list,
}
return HttpResponse(template.render(context, request))
polls/index.html 파일을 템플릿으로 불러와서 사용하는 간단한 코드입니다. 이 때 HttpResponse를 사용해서 값을 넘겨주게 됩니다. 이를 render 함수를 이용해서 간단하게 나타내면
from django.shortcuts import render
def index(request):
latest_question_list = Question.objects.order_by("-pub_date")[:5]
context = {"latest_question_list": latest_question_list}
return render(request, "polls/index.html", context)
더 간단한 형식으로 표현할 수 있습니다.
get_object_or_404()
예외사항이 발생했을 때에는 try - except 문과 Http404 함수를 이용하게 되는데 이를 한 번에 줄여서 구현할 수 있습니다. 먼저
def detail(request, question_id):
try:
question = Question.objects.get(pk=question_id)
except Question.DoesNotExist:
raise Http404("Question does not exit")
return render(request, "polls/detail.html", {"question" : question})
다음과 같이 try - except 문을 이용하여 존재하지 않는 항목을 처리했다면
from django.shortcuts import get_object_or_404
def detail(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, "polls/detail.html", {"question": question})
get_object_or_404 를 이용해서 더 간단하게 코드를 구현할 수 있습니다. 이때 이 함수는 try - except 문과 동일한 기능을 해줍니다.
get_list_or_404 : 이 함수를 통해서 List도 불러올 수 있습니다. get_object_or_404와 기능은 유사하지만 get_object_or_404는 get()을 사용하고 get_list_or_404는 filter()를 사용한다는 차이점이 있습니다.
추가 정리
Django는 풀스택 프레임워크로 간단한 프론트엔드 기능도 지원을 하는데 이는 간단한 프로젝트나 관리자 대시보드를 구현하는 데에 사용됩니다. 만약 Django를 백엔드 프레임워크로만 사용하려고 한다면 render가 아니라 HttpResponse나 JsonResponse를 사용해서 템플릿 기반이 아니라 API 서버로 사용할 수 있습니다.
'Python > Django' 카테고리의 다른 글
[Django] pep 8 코드 스타일 (0) | 2024.12.23 |
---|---|
[Django] 뷰(View) 종류 (1) | 2024.12.22 |
[Django] Model과 Field (0) | 2024.12.17 |
[Django] 관리자 관련 (0) | 2024.12.17 |
[Django] settings.py와 migrate (0) | 2024.12.16 |