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 相关文章推荐
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
python 打印出所有的对象/模块的属性(实例代码)
Sep 11 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
解决PyCharm同目录下导入模块会报错的问题
Oct 13 Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 Python
Python Django 封装分页成通用的模块详解
Aug 21 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
Python 根据数据模板创建shapefile的实现
Nov 26 Python
Python内置方法实现字符串的秘钥加解密(推荐)
Dec 09 Python
Python稀疏矩阵及参数保存代码实现
Apr 18 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 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
如何让CI框架支持service层
2014/10/29 PHP
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
Python最长公共子串算法实例
2015/03/07 Python
简单实现python收发邮件功能
2018/01/05 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
详解python-图像处理(映射变换)
2019/03/22 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
python输出数学符号实例
2020/05/11 Python
canvas与html5实现视频截图功能示例
2016/12/15 HTML / CSS
西尔斯百货官网:Sears
2016/09/06 全球购物
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
机电工程专业应届生求职信
2013/10/03 职场文书
毕业生找工作推荐信
2013/11/21 职场文书
教学大赛获奖感言
2014/01/15 职场文书
毕业留言寄语大全
2014/04/10 职场文书
某某同志考察材料
2014/05/28 职场文书
银行授权委托书格式
2014/10/10 职场文书
社会实践活动总结格式
2015/05/11 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python