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 相关文章推荐
Python3简单实例计算同花的概率代码
Dec 06 Python
python实现按长宽比缩放图片
Jun 07 Python
Python中文编码知识点
Feb 18 Python
python多线程下信号处理程序示例
May 31 Python
Django框架orM与自定义SQL语句混合事务控制操作
Jun 27 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 Python
详解Python self 参数
Aug 30 Python
python range实例用法分享
Feb 06 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
Pandas读取csv时如何设置列名
Jun 02 Python
Python如何使用input函数获取输入
Aug 06 Python
基于Django快速集成Echarts代码示例
Dec 01 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模拟SQL Server的两个日期处理函数
2006/10/09 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
jQuery实现给input绑定回车事件的方法
2017/02/09 Javascript
bootstrap轮播图示例代码分享
2017/05/17 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
Python中Numpy mat的使用详解
2019/05/24 Python
python3使用GUI统计代码量
2019/09/18 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
财务管理职业生涯规划书
2014/02/26 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
初中优秀班集体申报材料
2014/05/01 职场文书
班级体育活动总结
2014/07/05 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
2015年实习单位评语
2015/03/25 职场文书
小学远程教育工作总结
2015/08/13 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书