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高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
Python基于DES算法加密解密实例
Jun 03 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 Python
pandas series序列转化为星期几的实例
Apr 11 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
python实现QQ邮箱发送邮件
Mar 06 Python
django 连接数据库出现1045错误的解决方式
May 14 Python
Python实现AES加密,解密的两种方法
Oct 03 Python
TensorFlow的自动求导原理分析
May 26 Python
详解如何用Python实现感知器算法
Jun 18 Python
Python办公自动化解决world文件批量转换
Sep 15 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
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
php cookie 详解使用实例
2016/11/03 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
走出JavaScript初学困境—js初学
2008/12/29 Javascript
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
2018/05/10 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
python动态加载包的方法小结
2016/04/18 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
python中K-means算法基础知识点
2021/01/25 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
我的中国心演讲稿
2014/09/04 职场文书
教师党员承诺书2015
2015/01/21 职场文书
高三化学教学反思
2016/02/22 职场文书
如何拟写通知正文?
2019/04/02 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript