TemplateView , ListView ,DetailView三种常用类视图用法

来源:互联网 发布:win10网络共享密码设置 编辑:程序博客网 时间:2024/06/08 16:34

有函数类图,还需要类视图??当然,类视图方便,好用,不信你感受感受。。。。

TemplateView

get_queryset(self)#默认取出该表所有数据。想要过滤自定义只能在get_queryset()中 
个人理解:listview,detailview,templateview。前两个特别像,变量函数基本一样,templateview也差不多,只不过没有get_queryset()

model=Atticle#指定了数据表。他的功能相当于取出了Article中的所有数据template_name="blog/index.html"#指定页面context_object_name="artcle_list"#listview默认使用object_list作为上下文变量。可使用context_object_name重命名。get_context_data(self,**kwargs)#这个方法用来添加额外的内容到上下文变量中。
  • 1
  • 2
  • 3
  • 4

Example views.py:

from django.views.generic.base import TemplateViewfrom articles.models import Articleclass 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Example urls.py:

from django.conf.urls import urlfrom myapp.views import HomePageViewurlpatterns = [    '''    classmethod as_view(**initkwargs)¶    返回一个可调用的视图,它接受一个请求并返回一个响应:    response = MyView.as_view()(request)    '''    url(r'^$', HomePageView.as_view(), name='home'),]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Example home.html:

{% for article in latest_articles%}    {{article.name}}{% endfor %}
  • 1
  • 2
  • 3

ListView、DetailView

官方文档:ListView-Django documention

个人理解:listview ,detailview的区别在是,基本没什么区别。ListView与DetailView的区别

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)#这个方法用来添加额外的内容到上下文变量中。
原创粉丝点击