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)#這個方法用來添加額外的內容到上下文變量中。