TemplateView , ListView ,DetailView三種經常使用類視圖用法

TemplateViewhtml

我的理解:listview,detailview,templateview。前兩個特別像,變量函數基本同樣,templateview也差很少,只不過沒有get_queryset()。django

model=Atticle#指定了數據表。他的功能至關於取出了Article中的全部數據
template_name="blog/index.html"#指定頁面
context_object_name="artcle_list"#listview默認使用object_list做爲上下文變量。可以使用context_object_name重命名。
get_context_data(self,**kwargs)#這個方法用來添加額外的內容到上下文變量中。

Example views.py:app

from django.views.generic.base import TemplateView

from articles.models import Article

class HomePageView(TemplateView):

    template_name = "home.html"#最少得有這個

    def get_context_data(self, **kwargs):#向上下文變量中添加額外的數據
        context = super(HomePageView, self).get_context_data(**kwargs)
        context['latest_articles'] = Article.objects.all()[:5]
        return context

Example urls.py:函數

from myapp.views import HomePageView

urlpatterns = [
    '''
    classmethod as_view(**initkwargs)¶
    返回一個可調用的視圖,它接受一個請求並返回一個響應:
    response = MyView.as_view()(request)
    '''
    url(r'^$', HomePageView.as_view(), name='home'),
]

Example home.html:url

{% for article in latest_articles%}
    {{article.name}}
{% endfor %}

ListView、DetailView.net

官方文檔:ListView-Django documentioncode

我的理解:listview ,detailview的區別在是,基本沒什麼區別.ListView與DetailView的區別htm

model=Atticle#指定了數據表。他的功能至關於取出了Article中的全部數據
template_name="blog/index.html"#指定頁面
context_object_name="artcle_list"#listview默認使用object_list做爲上下文變量。可以使用context_object_name重命名。
get_queryset(self)#默認取出該表全部數據。想要過濾自定義只能在get_queryset()中
get_context_data(self,**kwargs)#這個方法用來添加額外的內容到上下文變量中。
相關文章
相關標籤/搜索