"1. 장고 뷰 개요"의 두 판 사이의 차이
(→형태) |
(→return) |
||
(사용자 2명의 중간 판 2개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
+ | <youtube>https://www.youtube.com/watch?v=VadvzFGqDcc</youtube> | ||
==개요== | ==개요== | ||
73번째 줄: | 74번째 줄: | ||
!설명 | !설명 | ||
!방법 | !방법 | ||
+ | |- | ||
+ | |HttpResponse | ||
+ | |html을 내보낸다. | ||
+ | |return HttpResponse(html코드) | ||
+ | |- | ||
+ | |JsonResponse | ||
+ | |사전형의 데이터를 Json형태로 내보낸다. | ||
+ | |return JsonResponse(사전) | ||
|- | |- | ||
|render | |render | ||
|탬플릿을 html코드로 가공하여 HttpResponse로 내보낸다. 탬플릿(html)을 활용하여 이 함수를 사용하는 게 가장 간편하다. | |탬플릿을 html코드로 가공하여 HttpResponse로 내보낸다. 탬플릿(html)을 활용하여 이 함수를 사용하는 게 가장 간편하다. | ||
+ | - 사전형으로 데이터를 템플릿에 전달하기 위한 변수로 많이 쓰는데.. 이 안에 또 사전을 넣으면 탬플릿에서 {% for key, value in 사전.items %} 형태로 사용할 수도 있다. | ||
|return render(request, '탬플릿경로', 사전) | |return render(request, '탬플릿경로', 사전) | ||
|- | |- | ||
86번째 줄: | 96번째 줄: | ||
|인수를 담아 해당 페이지로 넘긴다. | |인수를 담아 해당 페이지로 넘긴다. | ||
|return HttpRedirect(reverse('url이름', 인수=(보낼객체), 인수2=(보낼객체2)) | |return HttpRedirect(reverse('url이름', 인수=(보낼객체), 인수2=(보낼객체2)) | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
revere는 url이름에서 url을 추출해 주소를 반환하는 기능. | revere는 url이름에서 url을 추출해 주소를 반환하는 기능. | ||
다시 다른 주소로 보내 다른 함수를 작동시킨다. | 다시 다른 주소로 보내 다른 함수를 작동시킨다. | ||
− | |||
− | |||
==기타== | ==기타== | ||
2021년 7월 27일 (화) 11:34 기준 최신판
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)을 활용하여 이 함수를 사용하는 게 가장 간편하다.
- 사전형으로 데이터를 템플릿에 전달하기 위한 변수로 많이 쓰는데.. 이 안에 또 사전을 넣으면 탬플릿에서 {% for key, value in 사전.items %} 형태로 사용할 수도 있다. |
return render(request, '탬플릿경로', 사전) |
redirect | 해당 페이지로 보낸다.
'/' 따위의 인수를 담아 보낸다. |
return redirect('보낼경로') |
HttpRedirect | 인수를 담아 해당 페이지로 넘긴다. | return HttpRedirect(reverse('url이름', 인수=(보낼객체), 인수2=(보낼객체2)) |
revere는 url이름에서 url을 추출해 주소를 반환하는 기능.
다시 다른 주소로 보내 다른 함수를 작동시킨다.
4 기타편집
- 에러를 반환하고 싶다면 HttpResponseNotFound 등을 반환하면 된다.
- 뷰의 인수로 쓰이는 request에 사용자의 요청 내용이 담긴다. html의 form에 담긴 내용 등을 포함하고 있다.