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实现在pandas.DataFrame添加一行
Apr 04 Python
详解Python下Flask-ApScheduler快速指南
Nov 04 Python
pandas 如何分割字符的实现方法
Jul 29 Python
python中pygame安装过程(超级详细)
Aug 04 Python
python3.6中@property装饰器的使用方法示例
Aug 17 Python
python 视频逐帧保存为图片的完整实例
Dec 10 Python
np.dot()函数的用法详解
Jan 17 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
Mar 14 Python
Python自动登录QQ的实现示例
Aug 28 Python
python 制作本地应用搜索工具
Feb 27 Python
聊一聊python常用的编程模块
May 14 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
快速开发一个PHP扩展图文教程
2008/12/12 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
firefox插件Firebug的使用教程
2010/01/02 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
Python与shell的3种交互方式介绍
2015/04/11 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Python制作爬虫采集小说
2015/10/25 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
django如何通过类视图使用装饰器
2019/07/24 Python
Python编程中类与类的关系详解
2019/08/08 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
员工工作表扬信范文
2014/01/13 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
Java基于字符界面的简易收银台
2021/06/26 Java/Android