1. 장고 뷰 개요

Pywiki
Sam (토론 | 기여)님의 2021년 5월 24일 (월) 23:36 판 (새 문서: ==개요== 작동원리가 담긴 코드. 사용자에게 보이지 않는 뒷작업을 담당한다. 일반적으로 템플릿을 불러와 이를 HttpResponse객체에 담아 클...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 가기 검색하러 가기

1 개요

작동원리가 담긴 코드.

사용자에게 보이지 않는 뒷작업을 담당한다.

일반적으로 템플릿을 불러와 이를 HttpResponse객체에 담아 클라이언트에게 응답한다.

2 형태

형태 코드 설명
최소형태
from django.http import HttpResponse

def 함수명(request):
    return HttpResponse('내용')
request를 받고 HttpResponse를 반환한다.
응답을 하기 위해.

에러를 반환하고 싶다면 HttpResponseNotFound 등을 반환.

모델 활용
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)

    ...
        render(request, '템플릿경로(root에서부터의경로)', 사전)
탬플릿에 넘겨준다는 표현을 했지만,

탬플릿을 불러들여 규칙에 따라 손본 후 내용을 HttpResponse에 담아 반환하는 과정을 거친다.

템플릿에 넘겨주는 방식은 파이썬 사전형이다.

render는 데이터를 HTTPResponse로 반환한다.

from 앱이름.models import 모델명

테이블에 엑세스하기 위한 임포트가 필요하다.

함수 안에서 모델.object.all() 형식으로 객체를 불러올 수 있다.

[아마 모델.object.all()[컬럼명]으로 열접근이 될듯?]

템플릿에 넘겨주는 방식은 파이썬 사전형이다.

이를 render함수 안에 넣어서 return 한다.(이걸 쓰기 위해 from django.shortcuts import render 필요)

render(request, '템플릿명(템플릿root에서부터 경로로 쓴다.)', 사전)

render는 데이터를 HTTPResponse로 반환한다.

일반적으로 템플릿에 보냈다가 이를 HttpResponse객체에 담아 클라이언트에게 응답한다.

view 함수 안에서..

객체 = get_object_or_404(오브젝트, pk=객체.id) 형태로 객체가 없으면 404를 반환한다. 이걸 쓰려면 django.shortcuts에서 get_object_or_404를 임포트해야 한다.

리다이렉트하기(view)

return HttpRedirect(reverse('url이름', args=(보낼객체), args=(보낼객체2))

revere는 url이름에서 url을 추출해 주소를 반환하는 기능.

다시 다른 주소로 보내 다른 함수를 작동시킨다.

{% url %} 태그와 동일한 기능이라 보면 된다.

3 render

탬플릿을 html코드로 가공하여 HttpResponse로 내보낸다. 탬플릿(html)을 활용하여 이 함수를 사용하는 게 가장 간편하다.

함수 설명 방법
redirect 해당 페이지로 보낸다.

'/' 따위의 인수를 담아 보낸다.

return redirect('보낼경로')
HttpResponse html을 내보낸다. return HttpResponse(html코드)
JsonResponse 사전형의 데이터를 Json형태로 내보낸다. return JsonResponse(사전)

4 기타

  • 에러를 반환하고 싶다면 HttpResponseNotFound 등을 반환하면 된다.
  • 뷰의 인수로 쓰이는 request에 사용자의 요청 내용이 담긴다. html의 form에 담긴 내용 등을 포함하고 있다.