- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Django 框架中通用类视图的用法.doc
Django 框架中通用类视图的用法
摘要:Django是一个开源的Web开发框架,它为Web开发中的常见问题提供了完整的解决方案。Django定义了一些基于类的通用视图,用于解决一些常见的Web任务。该文主要介绍了类视图的基本用法以及几个常用的类视图。
关键词:Django;类;Web
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)13-0103-02
1类视图的基本使用
Django中的视图是一个可调用对象,在Django的早期版本中,视图用函数来实现。随着Django的不断发展,Django的技术团队提供了新的实现,用类来表示视图,并且针对Web开发中的常见任务,定义了大量的通用类视图。使用基于类的视图,可以更好的构建视图的内在逻辑,并且利于继承和混合重用。使用基于类的视图主要用2种方式:
1)在URLconf 中的简单用法
如果只是修改类的一些简单的属性,在URLconf 中直接使用基于类的视图,是最简单职业的方法。可以将要修改的属性直接传递给类视图的as_view() 方法:
from django.conf.urls import url
from django.views.generic import TemplateView
urlpatterns=[url(
r^home/,TemplateView.as_view(template_name=about.html))]
在这个例子中,我们设置TemplateView的template_name属性。可以使用类似的方法覆盖RedirectView 的query_string属性。
2)子类化通用视图
使用类视图的第二种方法是继承一个已经存在的类视图,然后在子类中覆盖其属性或方法、例如,考虑只显示一个模板home.html 的视图。Django 有一个通用视图TemplateView来做这件事,所以我们可以简单地子类化它,并覆盖模板的名称:
fromdjango.views.genericimportTemplateView
classHomeView(TemplateView):
template_name=home.html
然后我们只需要添加这个新的视图到我们的URLconf 中。TemplateView是一个类不是一个函数,所以我们将URL 指向类的as_view()方法,它让基于类的视图提供一个类似函数的入口:
fromdjango.conf.urlsimporturl
fromsome_app.viewsimportAboutView
urlpatterns=[url(r^about/,AboutView.as_view())]
2几种常用的类视图
针对Web开发中的常见任务,Django定义了一组基础视图、一组通用显示视图以及一组通用编辑视图等类视图。下面依次介绍几个常用的类视图。
1)TemplateView
TemplateView是基础视图。该视图主要用于渲染一个给定的模板。它的template_name属性用于指定模板,get_context_data方法用于获得显示在模板中的数据。
classHomePageView(TemplateView):
template_name=home.html
defget_context_data(self,**kwargs):
context=super(HomePageView,self).get_context_data(**kwargs)
context[latest_articles]=Article.objects.all()[:5]
returncontext
2)ListView
ListView是一个通用显示视图,主要用于显示一个对象列表。可以通过重写它的get_queryset方法,来获取要显示的列表。
class ObjectList(ListView):
def get_queryset(self):
modelobj = get_model(self.kwargs[app], self.kwargs[model])
# 获得url后的参数
kwargs = self.request.GET.dict()
return modelobj.objects.filter(**kwargs)
在get_queryset方法中,使用get_model方法可以动态的根据app和model来获取模型,列表的查询参数
文档评论(0)