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 相关文章推荐
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
python实现远程控制电脑
May 23 Python
python 函数中的内置函数及用法详解
Jul 02 Python
简单了解python代码优化小技巧
Jul 08 Python
python编写简单端口扫描器
Sep 04 Python
python3 pillow模块实现简单验证码
Oct 31 Python
django ajax发送post请求的两种方法
Jan 05 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
Python之字典对象的几种创建方法
Sep 30 Python
python 如何设置守护进程
Oct 29 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中使用反射技术的架构插件使用说明
2010/05/18 PHP
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
浅析php单例模式
2014/11/25 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
用python 制作图片转pdf工具
2015/01/30 Python
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
使用python编写监听端
2018/04/12 Python
Python发展史及网络爬虫
2019/06/19 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
教育局长自荐信范文
2013/12/22 职场文书
数控技术应用个人求职信范文
2014/02/03 职场文书
公益广告宣传方案
2014/02/28 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
大学生个人总结范文
2015/02/15 职场文书
如何写好活动总结
2019/06/21 职场文书