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 相关文章推荐
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
改进Django中的表单的简单方法
Jul 17 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
python+opencv实现高斯平滑滤波
Jul 21 Python
python遍历小写英文字母的方法
Jan 02 Python
python3 批量获取对应端口服务的实例
Jul 25 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
python两种注释用法的示例
Oct 09 Python
python爬取代理ip的示例
Dec 18 Python
Python从MySQL数据库中面抽取试题,生成试卷
Jan 14 Python
python单例模式的应用场景实例讲解
Feb 24 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
终于听上了直流胆调频
2021/03/02 无线电
PHP高级OOP技术演示
2009/08/27 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
javascript 写类方式之四
2009/07/05 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
javascript trie前缀树的示例
2018/01/29 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
python实现划词翻译
2020/04/23 Python
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
python中pygame模块用法实例
2014/10/09 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
python调用百度REST API实现语音识别
2018/08/30 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
英国床垫在线:Mattress Online
2016/12/07 全球购物
幼儿园老师辞职信
2014/01/20 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
安全例会汇报材料
2014/08/23 职场文书