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对列表排序的方法实例分析
May 16 Python
python3实现小球转动抽奖小游戏
Apr 15 Python
python+logging+yaml实现日志分割
Jul 22 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
python 读取、写入txt文件的示例
Sep 27 Python
Python LMDB库的使用示例
Feb 14 Python
使用python实现学生信息管理系统
Feb 25 Python
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 Python
python unittest单元测试的步骤分析
Aug 02 Python
Python如何使用循环结构和分支结构
Apr 13 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经典的给图片加水印程序
2006/12/06 PHP
PHP详细彻底学习Smarty
2008/03/27 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
PHP实现的简易版图片相似度比较
2015/01/07 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
2012/03/14 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
Javascript实现鼠标框选操作  不是点击选取
2016/04/14 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
element-ui中Table表格省市区合并单元格的方法实现
2019/08/07 Javascript
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python正则表达式re模块详细介绍
2014/05/29 Python
Python编写一个优美的下载器
2018/04/15 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
解析python实现Lasso回归
2019/09/11 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
介绍一下XMLHttpRequest对象
2012/02/12 面试题
公司财务自我评价分享
2013/12/17 职场文书
早餐连锁店计划书
2014/01/08 职场文书
幼儿园春游活动方案
2014/01/19 职场文书
干部现实表现材料
2014/02/13 职场文书
端午节活动总结
2014/08/26 职场文书
化工实习心得体会
2014/09/09 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL
keepalived + nginx 实现高可用方案
2022/12/24 Servers