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 list使用示例 list中找连续的数字
Jan 27 Python
wxPython中文教程入门实例
Jun 09 Python
windows下wxPython开发环境安装与配置方法
Jun 28 Python
零基础写python爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
Python基础知识_浅谈用户交互
May 31 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
对dataframe数据之间求补集的实例详解
Jan 30 Python
对IPython交互模式下的退出方法详解
Feb 16 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
Python实现哲学家就餐问题实例代码
Nov 09 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中的一个中文字符串截取函数
2007/02/14 PHP
PHP扩展编写点滴 技巧收集
2010/03/09 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
js点击选择文本的方法
2015/02/09 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
Bootstrap字体图标无法正常显示的解决方法
2016/10/08 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
VUE长按事件需求详解
2017/10/18 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
Python实现多线程下载文件的代码实例
2014/06/01 Python
python中异常捕获方法详解
2017/03/03 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
建筑文秘专业个人求职信范文
2013/12/28 职场文书
村党支部公开承诺书
2014/05/29 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
山楂树之恋观后感
2015/06/11 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
Java基础——Map集合
2022/04/01 Java/Android
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python