Django 클래스 뷰 (1) 클래스 뷰

3079 단어
적용 버전:django1.11
홈페이지 주소:https://docs.djangoproject.com/en/1.11/topics/class-based-views/
보기는 요청을 받고 응답을 되돌릴 수 있는 호출 함수입니다.이것은 함수의 형식일 뿐만 아니라, Django는 보기 기능을 실현하는 클래스도 제공한다.클래스 보기는 코드를 다시 사용하기 위해 계승과mixin을 통해 보기를 구축하는 데 도움을 줍니다.django는 간단한 임무를 완성하는 유니버설 보기를 내장하지만 개발자는 자신의 재사용 가능한 보기 구조를 설계하여 개발 요구를 충족시켜야 할 가능성이 높다.상세한 정보는 기본 보기 참고 문서를 참조하십시오.
4
  • 클래스 뷰 소개 4
  • 4
  • 내장 베이스 일반 보기
  • 4
  • 클래스 보기 처리 폼 사용
  • 4
  • 클래스 보기에서mixins를 어떻게 사용하는지 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는 최근에 발표된 도서의 시간을 가리킨다.이 정보를 바탕으로 클라이언트는 완전한 대상 목록을 다운로드하지 않을 수도 있습니다.

    좋은 웹페이지 즐겨찾기