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标准库os.path包、glob包使用实例
Nov 25 Python
python中PIL安装简单教程
Apr 21 Python
python 容器总结整理
Apr 04 Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 Python
python 2.7.14安装图文教程
Apr 08 Python
pyqt5实现登录界面的模板
May 30 Python
python查询文件夹下excel的sheet名代码实例
Apr 02 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
opencv 图像滤波(均值,方框,高斯,中值)
Jul 08 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
python中Pexpect的工作流程实例讲解
Mar 02 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 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 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
清除输入框内的空格
2016/12/21 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
基于python中的TCP及UDP(详解)
2017/11/06 Python
python2.7实现爬虫网页数据
2018/05/25 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
Django Rest framework之权限的实现示例
2018/12/17 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
对Django url的几种使用方式详解
2019/08/06 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
基于plt.title无法显示中文的快速解决
2020/05/16 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
如何利用python 读取配置文件
2021/01/06 Python
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
linux面试题参考答案(11)
2016/11/26 面试题
出生公证委托书
2014/04/03 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
民族精神月活动总结
2014/08/28 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
新生儿未入户证明
2015/06/23 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript