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获得时间的实例说明
Mar 25 Python
解析Python中的__getitem__专有方法
Jun 27 Python
python实现批量监控网站
Sep 09 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
Python中使用Counter进行字典创建以及key数量统计的方法
Jul 06 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
Python 依赖库太多了该如何管理
Nov 08 Python
python读取当前目录下的CSV文件数据
Mar 11 Python
keras 使用Lambda 快速新建层 添加多个参数操作
Jun 10 Python
keras 简单 lstm实例(基于one-hot编码)
Jul 02 Python
python中pyplot基础图标函数整理
Nov 10 Python
基于Python的接口自动化读写excel文件的方法
Jan 15 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 session和cookie使用说明
2010/04/07 PHP
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
CI框架Session.php源码分析
2014/11/03 PHP
记录一次排查PHP脚本执行卡住的问题
2016/12/27 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
python使用knn实现特征向量分类
2018/12/26 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
python 调整图片亮度的示例
2020/12/03 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
美术师范毕业生自荐信
2013/11/16 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
车辆委托书范本
2014/10/05 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
党校学习党性分析材料
2014/12/19 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
中学推普周活动总结
2015/05/07 职场文书
广播体操比赛主持词
2015/06/29 职场文书
golang定时器
2022/04/14 Golang