Django框架中的对象列表视图使用示例


Posted in Python onJuly 21, 2015

direct_to_template 毫无疑问是非常有用的,但Django通用视图最有用的地方是呈现数据库中的数据。 因为这个应用实在太普遍了,Django带有很多内建的通用视图来帮助你很容易 地生成对象的列表和明细视图。

让我们先看看其中的一个通用视图: 对象列表视图。 我们使用第五章中的 Publisher 来举例:

class Publisher(models.Model):
  name = models.CharField(max_length=30)
  address = models.CharField(max_length=50)
  city = models.CharField(max_length=60)
  state_province = models.CharField(max_length=30)
  country = models.CharField(max_length=50)
  website = models.URLField()

  def __unicode__(self):
    return self.name

  class Meta:
    ordering = ['name']

要为所有的出版商创建一个列表页面,我们使用下面的URL配置:

from django.conf.urls.defaults import *
from django.views.generic import list_detail
from mysite.books.models import Publisher

publisher_info = {
  'queryset': Publisher.objects.all(),
}

urlpatterns = patterns('',
  (r'^publishers/$', list_detail.object_list, publisher_info)
)

这就是所要编写的所有Python代码。 当然,我们还需要编写一个模板。 我们可以通过在额外参数字典中包含一个template_name键来显式地告诉object_list视图使用哪个模板:

from django.conf.urls.defaults import *
from django.views.generic import list_detail
from mysite.books.models import Publisher

publisher_info = {
  'queryset': Publisher.objects.all(),
  **'template_name': 'publisher_list_page.html',**
}

urlpatterns = patterns('',
  (r'^publishers/$', list_detail.object_list, publisher_info)
)

在缺少template_name的情况下,object_list通用视图将自动使用一个对象名称。 在这个例子中,这个推导出的模板名称将是 "books/publisher_list.html" ,其中books部分是定义这个模型的app的名称, publisher部分是这个模型名称的小写。

这个模板将按照 context 中包含的变量 object_list 来渲染,这个变量包含所有的书籍对象。 一个非常简单的模板看起来象下面这样:

{% extends "base.html" %}

{% block content %}
  <h2>Publishers</h2>
  <ul>
    {% for publisher in object_list %}
      <li>{{ publisher.name }}</li>
    {% endfor %}
  </ul>
{% endblock %}

(注意,这里我们假定存在一个base.html模板。)

这就是所有要做的事。 要使用通用视图酷酷的特性只需要修改参数字典并传递给通用视图函数。 附录D是通用视图的完全参考资料;本章接下来的章节将讲到自定义和扩展通用视图的一些方法。

Python 相关文章推荐
python3访问sina首页中文的处理方法
Feb 24 Python
关于Python中浮点数精度处理的技巧总结
Aug 10 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
pyttsx3实现中文文字转语音的方法
Dec 24 Python
Python最小二乘法矩阵
Jan 02 Python
Python3按一定数据位数格式处理bin文件的方法
Jan 24 Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 Python
windows下numpy下载与安装图文教程
Apr 02 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
PyCharm 2019.3发布增加了新功能一览
Dec 08 Python
Python实现转换图片背景颜色代码
Apr 30 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 Python
在Python的Django框架中使用通用视图的方法
Jul 21 #Python
在Django的模型中执行原始SQL查询的方法
Jul 21 #Python
在Django的模型中添加自定义方法的示例
Jul 21 #Python
详解Python的Django框架中Manager方法的使用
Jul 21 #Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 #Python
通过数据库向Django模型添加字段的示例
Jul 21 #Python
Django的数据模型访问多对多键值的方法
Jul 21 #Python
You might like
php array_search() 函数使用
2010/04/13 PHP
php获取mysql数据库中的所有表名的代码
2011/04/23 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
解决python 找不到module的问题
2020/02/12 Python
python实现PCA降维的示例详解
2020/02/24 Python
numpy库reshape用法详解
2020/04/19 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
期末自我鉴定
2014/01/23 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
企业培训简报范文
2015/07/20 职场文书
中学教代会开幕词
2016/03/04 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python