1. 장고 뷰 개요

Sam (토론 | 기여)님의 2021년 5월 25일 (화) 18:28 판 (→‎형태)

1 개요

작동원리가 담긴 코드.

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

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

2 형태

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

def 함수명(request):
    return HttpResponse('내용')
request를 받고 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

뷰의 마지막에 올 수 있는 것들.

함수 설명 방법
render 탬플릿을 html코드로 가공하여 HttpResponse로 내보낸다. 탬플릿(html)을 활용하여 이 함수를 사용하는 게 가장 간편하다. return render(request, '탬플릿경로', 사전)
redirect 해당 페이지로 보낸다.

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

return redirect('보낼경로')
HttpRedirect 인수를 담아 해당 페이지로 넘긴다. return HttpRedirect(reverse('url이름', 인수=(보낼객체), 인수2=(보낼객체2))
HttpResponse html을 내보낸다. return HttpResponse(html코드)
JsonResponse 사전형의 데이터를 Json형태로 내보낸다. return JsonResponse(사전)

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

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

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

4 기타

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