Django-简述generic views

Use generic views: Less code is better.

These views represent a common case of basic Web development: getting data from the database according to a parameter passed in the URL, loading a template and returning the rendered template. Because this is so common, Django provides a shortcut, called the "generic views" system.

Generic views abstract common patterns to the point where you don‘t even need to write Python code to write an app.

Let‘s convert our poll app to use the generic views system, so we can delete a bunch of our own code. We‘ll just have to take a few steps to make the conversion. We will:

  1. Convert the URLconf.
  2. Delete some of the old, unneeded views.
  3. Introduce new views based on Django‘s generic views.
# polls/views.py
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render
from django.urls import reverse
from django.views import generic

from .models import Choice, Question

class IndexView(generic.ListView):
    template_name = ‘polls/index.html‘
    context_object_name = ‘latest_question_list‘

    def get_queryset(self):
        """Return the last five published questions."""
        return Question.objects.order_by(‘-pub_date‘)[:5]
# def detail(request, question_id):
#     question = get_object_or_404(Question, pk=question_id)
#     return render(request, ‘polls/detail.html‘, {‘question‘: question})
class DetailView(generic.DetailView):
    model = Question
    template_name = ‘polls/detail.html‘

class ResultsView(generic.DetailView):
    model = Question
    template_name = ‘polls/results.html‘
  • 每个通用视图都需要知道它将作用于什么模型(models)。这是使用model属性提供的。
  • DetailView 通用视图期望从URL捕获的主键值被称为“pk”,因此我们将泛型视图的问题id更改为pk。

原文地址:https://www.cnblogs.com/daemonFlY/p/11504149.html

时间: 2024-08-28 09:00:54

Django-简述generic views的相关文章

API Guide(四)之Generic views

通用的视图 Django's generic views... were developed as a shortcut for common usage patterns... 它们采取一些常见的习语和模式,在视图开发中创建并抽象,以便可以快速编写数据的常见视图,而无需重复. - Django文档 CBV的主要优点之一是 the way they allow you to compose bits of reusable behavior. REST framework takes advan

第三百零五节,Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性

Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性 Views(视图函数)逻辑处理,最终是围绕着两个对象实现的 http请求中产生两个核心对象: http请求:HttpRequest对象 http响应:HttpResponse对象 所在位置:django.http 之前我们用到的参数request就是HttpRequest     HttpRequest对象 逻辑处理函数的第一个形式参数,接收到的就是HttpRequest对象,这个对象里封装着用户的各种请求信息,通过

ImportError: cannot import name 'login' from 'django.contrib.auth.views'

python版本: Django版本: 3.0.3 报错信息: File "D:\python_work\learning_log\users\urls.py", line 4, in <module> from django.contrib.auth.views import login ImportError: cannot import name 'login' from 'django.contrib.auth.views' (D:\python_work\lear

Django学习之通用视图(generic views)

Django的通用视图可以减少开发的单调性,它抽象出一些在视图开发中常用的代码和模式,这样就可以在无需编写大量代码的情况下,快速编写出常用的视图函数.下面将使用通用视图重写前面所写的代码.要使用通用视图,我们需要做几件事: 修改URLconf 编写基于通用视图的视图函数 1.修改URLconf from django.conf.urls import patterns,url from blog.views import * urlpatterns = patterns('', url(r'^$

django - generic views

ListView from django.views.generic import ListView ----------------------------------- class ListView Found at: django.views.generic.list class ListView(MultipleObjectTemplateResponseMixin, BaseListView): """ Render some list of objects, se

django (六) 第一个django app 创建views

在Django,网页和其他内容通过views来进行交互.每个视图都通过一个简单的Python函数(或方法)来展示.Django将通过检查请求的URL来选择一个视图(更精确地说是域名后面的URL).从URL到View的过程是通过URLconfs来控制的. 接下来让我们写一个view.首先打开polls/views.py,添加如下代码: # -*- coding: utf-8 -*- from django.http import HttpResponse def index(request): r

记录django中对views设置进行模板复用

django版本:1.4.5 由于需要对一个网页的部分内容进行输出,相当于第一个网页显示数据库中的所有信息,第二个网页需要显示数据库中某个特定字段的特定值的输出,页面样式相同 进一步解释,可以理解为一个页面显示全部下载项,另一个页面显示敏捷类游戏下载项,就是这样,页面样式一样 现在开始记录实现方式,在models里面必须有一个分类字段 views.py内容如下 1 def download(request): 2 ware = Software.objects.all() 3 #这个是取出所有数

Django 视图系统(views)

介绍 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项目目录下面. 除此之外没有更多的要求了——可以说“没有什么神奇的地方”.为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中. 视图示例 下面是一

Django:视图views(一)

1.环境搭建 在django中,视图负责与web请求进行交互 视图本质上是一个Python函数,定义在booktest/views.py.通过django1/urls.py路由到该视图中. 首先经过创建工程-命令行进入django3-配置数据库-创建数据库django3-创建应用-把booktest应用写入setting文件,下面开始配置路由: booktest/views.py from django.shortcuts import render from django.http impor