"1. 장고 뷰 개요"의 두 판 사이의 차이

Pywiki
둘러보기로 가기 검색하러 가기
 
(사용자 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))
|-
 
|HttpResponse
 
|html을 내보낸다.
 
|return HttpResponse(html코드)
 
|-
 
|JsonResponse
 
|사전형의 데이터를 Json형태로 내보낸다.
 
|return JsonResponse(사전)
 
|-
 
|
 
|
 
|
 
 
|}
 
|}
 
revere는 url이름에서 url을 추출해 주소를 반환하는 기능.
 
revere는 url이름에서 url을 추출해 주소를 반환하는 기능.
  
 
다시 다른 주소로 보내 다른 함수를 작동시킨다.
 
다시 다른 주소로 보내 다른 함수를 작동시킨다.
 
{% url %} 태그와 동일한 기능이라 보면 된다.
 
 
==기타==
 
==기타==
  

2021년 7월 27일 (화) 11:34 기준 최신판

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[편집 | 원본 편집]

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

함수 설명 방법
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에 담긴 내용 등을 포함하고 있다.