Python Django进阶教程(四)(通用视图)

25 篇文章 0 订阅

Django版本:1.11
操作系统:Windows
Python:3.5
欢迎加入学习交流QQ群:657341423


这章介绍通用视图,这个通用视图主要在views.py里面编写和定义的。
通用视图,主要作用就是快捷地将数据库数据呈现出网页上。
假设,我要在www.xxx.com/bookInfomation/显示一个表单,里面显示的是书包信息,然后表单下面是一些操作按钮等。
分析:针对这个网页,第一个生成1个table是用于显示数据的,第二个要生成1个表单()是用于按钮操作的。
第二个是form,这个可以参考Python Django基础教程(五)
第一个生成1个table的,可以用之前的方法,就是在views.py定义一个def,然后render_to_response或者render返回。基本上这是万能的方法。
此外还有一种比较简化的方法,这个就简化了代码冗余,可以小的代码实现table生成,这也就是通用视图

通用视图常用分为TemplateView、ListView和DetailView
TemplateView:可以方便的定义要返回的模板但它不能把数据库中的内容查询展示出来
如果设计到数据库数据,则ListView和DetailView。
ListView和DetailView有区别。ListView 用来获取某个 model 中的所有数据,而 DetailView 则是获取每个数据的详细信息。

ListView详解:
views.py
这里写图片描述
template_name指定那一个html文件。
context_object_name是html里面的变量名。
get_queryset函数确定变量的值。如果取消注释#model = Publisher,去除这个方法,默认全部值。具体看图中注释。
get_context_data是查询另外数据表的数据的。注释的代码和没有注释实现功能一样的。

urls.py
这里写图片描述
写url的时候,记得import models即可。
PublisherList.as_view():PublisherList为views.py的类名。.as_view()是必需的。

html
这里写图片描述
如果要其他数据,可以这样写:

<li>{{ publisher.city}}</li>

运行结果:
这里写图片描述

扩展:
因为我这个PublisherList默认是filter筛选条件的,如果要更换条件的话,可以这样做:
urls.py
这里写图片描述
publisher/后面带参数来确定最终url

views.py
这里写图片描述

实例:
结合上述url带参数方法,如果我在form里面的实现了一个post或者get,然后跳到对应views.py
的方法,可以用:即在网页上输入查询条件,然后点击确定按钮后,可以用重定向方法,跳转到指定通用视图的url上,将条件作为url的一部分,实现筛选和查询。

return HttpResponseRedirect('/polls/publisher/'+name+'/')

重定向跳到查询后的表格。


DetailView详解:
urls.py
这里写图片描述

views.py
这里写图片描述
原理和ListView大同小异。

html:
这里写图片描述
唯独注意的是,红色框的写法和ListView不一样的。
get_context_data额外增加的数据和ListView一样的。因为get_context_data里面的代码一样的。

运行结果
这里写图片描述
注意,这里红色内容,是参数,DetailView会根据这个参数去选择数据库那条数据的。


总结:通用视图实现的功能,基本上可以基础教程里面的方法实现的。而通用视图的最重要作用就是减小开发者的代码量。


进阶教程代码:请点击

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xy-Huang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值