当前位置: 首页 > 编程笔记 >

Django框架中的对象列表视图使用示例

漆雕疏珂
2023-03-14
本文向大家介绍Django框架中的对象列表视图使用示例,包括了Django框架中的对象列表视图使用示例的使用技巧和注意事项,需要的朋友参考一下

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是通用视图的完全参考资料;本章接下来的章节将讲到自定义和扩展通用视图的一些方法。

 类似资料:
  • 我正在学习Django和Django REST框架。我正在尝试执行API并添加查看权限。 来自django。db从django导入模型。contrib。auth。模型导入用户 我的模特: 我的连载者: 我的看法: 当我尝试添加新“word”时-显示错误: 序列化程序或视图中存在问题?如何修复?

  • 本文向大家介绍Django框架视图函数设计示例,包括了Django框架视图函数设计示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Django框架视图函数。分享给大家供大家参考,具体如下: 视图函数即为处理HTTP请求的python函数。一般情况下,视图函数的功能是通过模型层对象处理数据,然后通过下面三种方式返回HTTP Response: 直接构造HTTP BODY 用数据渲染HTM

  • 我从Django 1.10升级。4至1.11。1当我运行测试时,突然收到了大量这样的消息: 我将其追溯到Django分页模块:https://github.com/django/django/blob/master/django/core/paginator.py#L100 好像和我的queryset代码有关: 如何找到有关此警告的更多详细信息?似乎我需要在每个过滤器的末尾添加一个,但我似乎找不到

  • 本文向大家介绍详解Python的Django框架中的通用视图,包括了详解Python的Django框架中的通用视图的使用技巧和注意事项,需要的朋友参考一下 通用视图 1. 前言 回想一下,在Django中view层起到的作用是相当于controller的角色,在view中实施的 动作,一般是取得请求参数,再从model中得到数据,再通过数据创建模板,返回相应 响应对象。但在一些比较通用的功能中,比

  • 本文向大家介绍在Django的视图中使用form对象的方法,包括了在Django的视图中使用form对象的方法的使用技巧和注意事项,需要的朋友参考一下 在学习了关于Form类的基本知识后,你会看到我们如何把它用到视图中,取代contact()代码中不整齐的部分。 一下示例说明了我们如何用forms框架重写contact(): 看看,我们能移除这么多不整齐的代码! Django的forms框架处理H

  • 本文向大家介绍在Python的Django框架中显示对象子集的方法,包括了在Python的Django框架中显示对象子集的方法的使用技巧和注意事项,需要的朋友参考一下 现在让我们来仔细看看这个 queryset 。 大多数通用视图有一个queryset参数,这个参数告诉视图要显示对象的集合。 举一个简单的例子,我们打算对书籍列表按出版日期排序,最近的排在最前: 这是一个相当简单的例子,但是很说明问