1. 장고 뷰 개요
1 개요
작동원리가 담긴 코드.
사용자에게 보이지 않는 뒷작업을 담당한다.
일반적으로 템플릿을 불러와 이를 HttpResponse객체에 담아 클라이언트에게 응답한다.
2 형태
형태 | 코드 | 설명 |
---|---|---|
최소형태 | from django.http import HttpResponse
def 함수명(request):
return HttpResponse('내용')
|
응답을 하기 위해.
에러를 반환하고 싶다면 HttpResponseNotFound 등을 반환. |
2.1 모델 활용
단계 | 코드 | 설명 |
---|---|---|
모델 임포트 | from 앱이름.models import 모델명
|
테이블에 엑세스하기 위한 임포트가 필요하다.
함수 안에서 모델.object.all() 형식으로 객체를 불러올 수 있다. [아마 모델.object.all()[컬럼명]으로 열접근이 될듯?] |
템플릿에 데이터 전달 | from django.shortcuts import render
from django.shortcuts import get_object_or_404 #객체가 없을 때 에러페이지를 내기 위함.
def 함수명(request):
객체 = get_object_or_404(오브젝트, pk=객체.id)
...
return render(request, '템플릿경로', 사전)
탬플릿을 불러들여 규칙에 따라 손본 후 내용을 HttpResponse에 담아 반환하는 과정을 거친다. |
템플릿에 넘겨주는 방식은 파이썬 사전형이다.
render는 데이터를 가공하여 HTTPResponse로 반환한다. 2.2 view 함수 안에서..객체 = get_object_or_404(오브젝트, pk=객체.id) 형태로 객체가 없으면 404를 반환한다. 이걸 쓰려면 django.shortcuts에서 get_object_or_404를 임포트해야 한다. |
3 return
뷰의 마지막에 올 수 있는 것들.
함수 | 설명 | 방법 |
---|---|---|
HttpResponse | html을 내보낸다. | return HttpResponse(html코드) |
JsonResponse | 사전형의 데이터를 Json형태로 내보낸다. | return JsonResponse(사전) |
render | 탬플릿을 html코드로 가공하여 HttpResponse로 내보낸다. 탬플릿(html)을 활용하여 이 함수를 사용하는 게 가장 간편하다. | return render(request, '탬플릿경로', 사전) |
redirect | 해당 페이지로 보낸다.
'/' 따위의 인수를 담아 보낸다. |
return redirect('보낼경로') |
HttpRedirect | 인수를 담아 해당 페이지로 넘긴다. | return HttpRedirect(reverse('url이름', 인수=(보낼객체), 인수2=(보낼객체2)) |
revere는 url이름에서 url을 추출해 주소를 반환하는 기능.
다시 다른 주소로 보내 다른 함수를 작동시킨다.
4 기타
- 에러를 반환하고 싶다면 HttpResponseNotFound 등을 반환하면 된다.
- 뷰의 인수로 쓰이는 request에 사용자의 요청 내용이 담긴다. html의 form에 담긴 내용 등을 포함하고 있다.