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中几种操作字符串的方法的介绍
Apr 09 Python
python字典基本操作实例分析
Jul 11 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
python list元素为tuple时的排序方法
Apr 18 Python
python画图--输出指定像素点的颜色值方法
Jul 03 Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 Python
Python中的list与tuple集合区别解析
Oct 12 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
Dec 19 Python
Django如何批量创建Model
Sep 01 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
Oct 30 Python
python3实现Dijkstra算法最短路径的实现
May 12 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破解防盗链图片的一个简单方法
2014/06/07 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
javascript 鼠标滚轮事件
2009/04/09 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
javascript基本算法汇总
2016/03/09 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
python字符串替换示例
2014/04/24 Python
Python 中的 else详解
2016/04/23 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
pycharm在调试python时执行其他语句的方法
2018/11/29 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
高中语文课后反思
2014/04/27 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书
小学教育见习总结
2015/06/23 职场文书
小学六年级毕业感言
2015/07/30 职场文书
上班旷工检讨书
2015/08/15 职场文书
详解Laravel制作API接口
2021/05/31 PHP
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS