Django 클래스 뷰 (1) 클래스 뷰
홈페이지 주소:https://docs.djangoproject.com/en/1.11/topics/class-based-views/
보기는 요청을 받고 응답을 되돌릴 수 있는 호출 함수입니다.이것은 함수의 형식일 뿐만 아니라, Django는 보기 기능을 실현하는 클래스도 제공한다.클래스 보기는 코드를 다시 사용하기 위해 계승과mixin을 통해 보기를 구축하는 데 도움을 줍니다.django는 간단한 임무를 완성하는 유니버설 보기를 내장하지만 개발자는 자신의 재사용 가능한 보기 구조를 설계하여 개발 요구를 충족시켜야 할 가능성이 높다.상세한 정보는 기본 보기 참고 문서를 참조하십시오.
4
Django는 다양한 어플리케이션에 적합한 기본 뷰 클래스를 제공합니다.모든 보기는 보기 클래스를 계승하고 보기 클래스는 보기와 URL의 연결을 구축하고 HTTP 방법과 다른 간단한 특성을 분배합니다.RedirectView는 간단한 HTTP 리디렉션으로 TemplateView 확장 기본 클래스가 렌더링 템플릿 기능을 실현합니다.
URLconf의 간단한 사용
일반 뷰를 사용하는 가장 간단한 방법은 URLconf에서 직접 생성하는 것입니다.클래스 보기의 간단한 특성만 변경하면 asview () 메서드 전달:
from django.conf.urls import url
from django.views.generic import TemplateView
urlpatterns = [
url(r'^about/$', TemplateView.as_view(template_name="about.html")),
]
모든 입력 asview () 의 매개 변수는 클래스의 대응하는 속성을 덮어씁니다.이 예에서 TemplateView를 위한templatename.우리는 유사한 방법으로 RedirectView의 URL 속성을 다시 설정할 수 있습니다.
일반 뷰의 하위 클래스 작성
일반 보기를 사용하는 두 번째 방법은 이미 존재하는 클래스 보기를 계승하고 하위 클래스에서 속성 (예:template name) 이나 방법 (예: get context data) 을 다시 쓰는 것을 통해 새로운 값이나 방법을 제공하는 것입니다.예를 들어 하나의 템플릿(about.html)만 보여주는 보기.Django에는 이 작업을 수행할 수 있는 일반 보기(TemplateView)가 내장되어 있으며, 하위 클래스를 만들고 템플릿 이름을 덮어쓸 수 있습니다.
# some_app/views.py
from django.views.generic import TemplateView
class AboutView(TemplateView):
template_name = "about.html"
그런 다음 URLconf에 새 뷰를 추가하면 됩니다.TemplateView는 클래스(방법이 아님)입니다. 따라서 URL은 클래스의 as 를 가리킵니다.view () 방법, 클래스 보기에 함수 인터페이스를 제공합니다:
# urls.py
from django.conf.urls import url
from some_app.views import AboutView
urlpatterns = [
url(r'^about/$', AboutView.as_view()),
]
내장된 유니버설 보기를 사용하는 더 많은 방법은 유니버설 보기를 참고할 수 있습니다.
추가 HTTP 방법 지원
만약 누군가가 보기를 HTTP를 통해 우리 도서관을 방문하는 API로 삼으려고 한다면모든 사람이 API에 액세스하여 마지막으로 방문한 새 책의 데이터를 다운로드할 수 있습니다.그러나 그 이후 새 책이 없다면 데이터베이스에서 도서를 얻고 온전한 응답을 보여주며 클라이언트에게 보내는 것은 CPU 시간과 대역폭의 낭비다.더 좋은 방법은 API의 최신 책이 언제 발표되었는지 물어보는 것이다.
URLconf에서는 도서 목록 보기를 URL에 매핑합니다.
from django.conf.urls import url
from books.views import BookListView
urlpatterns = [
url(r'^books/$', BookListView.as_view()),
]
보기:
from django.http import HttpResponse
from django.views.generic import ListView
from books.models import Book
class BookListView(ListView):
model = Book
def head(self, *args, **kwargs):
last_book = self.get_queryset().latest('publication_date')
response = HttpResponse('')
# RFC 1123 date format
response['Last-Modified'] = last_book.publication_date.strftime('%a, %d %b %Y %H:%M:%S GMT')
return response
GET를 통해 이 보기에 접근할 것을 요청하면 응답은 간단한 대상 목록을 되돌려줍니다. (book list.html 템플릿을 사용합니다.)그러나 클라이언트가 HEAD 요청을 하면 응답 주체는 비어 있고 Last-modified는 최근에 발표된 도서의 시간을 가리킨다.이 정보를 바탕으로 클라이언트는 완전한 대상 목록을 다운로드하지 않을 수도 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.