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的dict,set,list,tuple应用详解
Jul 24 Python
深入理解Django中内置的用户认证
Oct 06 Python
解决phantomjs截图失败,phantom.exit位置的问题
May 17 Python
python进行文件对比的方法
Dec 24 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
Nov 19 Python
python的range和linspace使用详解
Nov 27 Python
Python requests设置代理的方法步骤
Feb 23 Python
python3发送request请求及查看返回结果实例
Apr 30 Python
python实现经纬度采样的示例代码
Dec 10 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/03/12 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
js 操作符实例代码
2009/10/24 Javascript
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
jquery 使用点滴函数代码
2011/05/20 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
python线程中同步锁详解
2018/04/27 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
python中wx模块的具体使用方法
2020/05/15 Python
python实现自动清理重复文件
2020/08/24 Python
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
程序集与命名空间有什么不同
2014/07/25 面试题
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python
Python中的datetime包与time包包和模块详情
2022/02/28 Python