Django generic view

8843 단어 Django
1、ListView:
views에서만.py 문서에서 이런 종류를 인용하면template에 필요한list를 빨리 생성할 수 있습니다.
from django.views.generic import ListView
from books.models import Publisher

class PublisherList(ListView):
    model = Publisher #  !        get  
그리고template/books/publisherlist.html 단순 렌더링:
{% block content %}
    

Publishers
    {% for publisher in object_list %} # :publiser_list( ,model list ), view :context_object_name = 'my_special_apply', my_special_apply object_list
  • {{ publisher.name }} {% endfor %} {% endblock %}

而若想展示指定的数据(即先作筛选),则只需修改PublisherList类:

class PublisherList(ListView):
    queryset = Publisher.objects.filter(    ) #  !       model

위의 맞춤법에서 선별 조건은 동적으로 진행할 수 없고 죽기만 할 수 있다. 동적으로 하려면 override ListView의 get 만 있으면 된다.queryset(self) 방법:
class PublisherList(ListView):
    # model = ApplyInfo #    model

    def get_queryset(self):
        pub_name = self.request.GET.get("publisher_name", "")
        # addr = "  "
        return Publisher.objects.filter(publisher_name=pub_name)
그리고 아래의 함수에 맞추어context의 내용을 풍부하게 한다
def get_context_data(self, **kwargs):

        context = super(Publisher, self).get_context_data(**kwargs)
        context['title'] = "demosd" #             context
        return context

2、DetailView
ListView에서 제공하는 내용이 전시용으로 충분하지 않을 때 DetailView를 사용할 수 있는 더 구체적인 정보가 필요합니다.
from django.views.generic import DetailView
from books.models import Publisher, Book

class PublisherDetail(DetailView):

    model = Publisher

    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super(PublisherDetail, self).get_context_data(**kwargs)
        # Add in a QuerySet of all the books
        context['book_list'] = Book.objects.all()
        return context
이렇게 하면 context 대상이 booklist의 데이터입니다.

좋은 웹페이지 즐겨찾기