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中ConfigParse模块的用法
Sep 29 Python
Python魔术方法详解
Feb 14 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
python抓取文件夹的所有文件
Feb 27 Python
pyqt5 实现多窗口跳转的方法
Jun 19 Python
基于django ManyToMany 使用的注意事项详解
Aug 09 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
python基于FTP实现文件传输相关功能代码实例
Sep 28 Python
python读取mysql数据绘制条形图
Mar 25 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 03 Python
python 监控logcat关键字功能
Sep 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中如何判断exec函数执行成功?
2016/08/04 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
php依赖注入知识点详解
2019/09/23 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
htm调用JS代码
2007/03/15 Javascript
jQuery 全选效果实现代码
2009/03/23 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
json跨域调用python的方法详解
2017/01/11 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
python 串行执行和并行执行实例
2020/04/30 Python
利用python进行文件操作
2020/12/04 Python
python中pickle模块浅析
2020/12/29 Python
玩具反斗城西班牙网上商城:ToysRUs西班牙
2017/01/19 全球购物
应届生财务会计求职信
2013/11/05 职场文书
如何写好建议书
2014/03/13 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
单位更名证明
2015/06/18 职场文书
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS
Nginx速查手册及常见问题
2022/04/07 Servers