前端教程:Django通用视图

在某些情况下编写视图代码,正如我们所看到前面工作真的很繁重。想象一下,只需要一个静态页面或列表页。 Django还提供了一种简单的方法来设置这些简单的视图被称为通用视图。

不同于传统的视图,一般的视图是一个类但没有函数。Django还提供了一组类django.views.generic通用视图,以及每一个普通视图是这些类或从它们中的一个类继承的。

有10+泛型类−

>>> import django.views.generic
>>> dir(django.views.generic)

['ArchiveIndexView', 'CreateView', 'DateDetailView', 'DayArchiveView',
   'DeleteView', 'DetailView', 'FormView', 'GenericViewError', 'ListView',
   'MonthArchiveView', 'RedirectView', 'TemplateView', 'TodayArchiveView',
   'UpdateView', 'View', 'WeekArchiveView', 'YearArchiveView', '__builtins__',
   '__doc__', '__file__', '__name__', '__package__', '__path__', 'base', 'dates',
   'detail', 'edit', 'list']1234567891011复制代码类型:[html]

你可以使用通用视图。让我们来看一些例子来看看它是如何工作的。

静态网页

让我们从“static.html”模板发布静态页面。

我们的static.html−

<html>
   <body>
   This is a static page!!!
   </body></html> 12345复制代码类型:[html]

如果我们这样做,按以前学过的方式,我们将不得不改变myapp/views.py −

from django.shortcuts import render

def static(request):
   return render(request, 'static.html', {}) 1234复制代码类型:[html]

myapp/urls.py如下 −

from django.conf.urls import patterns, url

urlpatterns = patterns("myapp.views", url(r'^static/', 'static', name = 'static'),) 

12345复制代码类型:[html]

最好的办法就是使用通用视图。对于这一点,我们的myapp/views.py将变成为 −

from django.views.generic import TemplateView

class StaticView(TemplateView):
   template_name = "static.html" 1234复制代码类型:[html]

而我们的myapp/urls.py将如下 −

from myapp.views import StaticView
from django.conf.urls import patterns

urlpatterns = patterns("myapp.views", (r'^static/$', StaticView.as_view()),) 

123456复制代码类型:[html]

当访问 /myapp/static 将得到 −

出于同样的结果,我们也可以,执行下列操作 −

不需要修改views.py

更改url.py文件为-

from django.views.generic import TemplateView
from django.conf.urls import patterns, url

urlpatterns = patterns("myapp.views",
   url(r'^static/',TemplateView.as_view(template_name = 'static.html')),)12345复制代码类型:[html]

正如你所看到的,只需要改变url.py文件中的第二个方法。

从数据库列表和显示数据

我们要列出所有条目在Dreamreal模型。这样使用ListView通用视图类变得容易。编辑url.py文件,并对其进行更新-

from django.views.generic import ListView
from django.conf.urls import patterns, url

urlpatterns = patterns(
   "myapp.views", url(r'^dreamreals/', ListView.as_view(model = Dreamreal,
   template_name = "dreamreal_list.html")),
) 

123456789复制代码类型:[html]

重要的是要注意,在这一点上是变量通由通用视图到模板为object_list。如果你想自己的名字,将需要一个context_object_name参数添加到as_view方法。然后url.py成为 -

from django.views.generic import ListView
from django.conf.urls import patterns, url

urlpatterns = patterns("myapp.views",
   url(r'^dreamreals/', ListView.as_view(
   template_name = "dreamreal_list.html")),
   model = Dreamreal, context_object_name = ”dreamreals_objects” ,)
12345678复制代码类型:[html]

然后关联的模板将成为 −

{% extends "main_template.html" %}
{% block content %}
Dreamreals:<p>{% for dr in object_list %}
{{dr.name}}</p>{% endfor %}
{% endblock %} 

123456789复制代码类型:[html]

访问/myapp/dreamreals/将产生如下页面

(0)

相关推荐

  • 基于django快速开发一个网站(三)

    给django集成富文本编辑器 下载富文本插件到系统 pip install django-mdeditor1 添加mdeditor到你的应用中 INSTALLED_APPS = [ - 'mdedi ...

  • python测试开发django-82.线上部署设置DEBUG=FALSE

    前言 django项目线上部署到云服务器,setting里面设置DEBUG=FALSE后,访问网站静态资源没显示相关问题解决. 准备工作: 1.一台服务器,如阿里云,腾讯云, 或者自己整个虚拟机 2. ...

  • 用 Python 在安卓手机上构建 Web 应用程序

    昨天 嘿,你好吗?我今年 18 岁,是一名后端开发者,我希望成为机器学习工程师.在本文中,我会介绍如何使用 Python 在手机上构建 Web 应用程序.开始吧! 必要条件 要满足的第一个条件是拥有一 ...

  • Python 做一个属于自己的web网站「上」

    原创 AI悦创 AI悦创 1周前收录于话题#Python 自动化办公实战课25#Django4"阅读本文大概需要15分钟"你好,我是悦创.今天我们来看看自动化办公系列中的做一个自己 ...

  • python测试开发django-56.模板渲染markdown语法+代码高亮

    前言 上一篇已经实现在xadmin后台编辑markdown语法的文档,编辑完成之后发布博客,在前端html能把markdown语法显示出来. 主要思路是先从数据库把markdown的代码读出来,导入m ...

  • 前端教程:Django创建视图

    视图功能,或简称"view",是一个简单的Python函数,它接受一个Web请求,并返回一个Web响应.此响应可以是Web页的HTML内容,或重定向,或404错误,或XML文档,或 ...

  • 前端教程:Django模型

    创建模型 下面是创建一个 Dreamreal 模型实例 − from django.db import models class Dreamreal(models.Model): website = ...

  • 前端教程:Django模板系统

    Django能够单独分开Python和HTML,Python代码/变量进入视图和HTML模板. 连接这两个,Django依赖于渲染函数和Django模板语言. 渲染函数 这个函数有三个参数 − 请求− ...

  • 前端教程:Django上传文件

    对于Web应用程序,以便能够上传文件(资料图片,歌曲,PDF格式,文字......),它通常是很有用的.让我们在这一节中来讨论如何使用Django上传文件. 上传图片 在开始开发图片上传之前,请确保P ...

  • 前端教程——JavaScript函数中重构If/Else语句的方法

    无论使用何种编程语言,代码都需要根据不同的情况对给定的输入做出不同的决定并执行相应的操作.举例来说,在游戏中,如果玩家的生命值是0,游戏就结束了.在气象应用程序中,如果观看早晨的日出,就会看到一张照片 ...

  • 前端教程:React之Fragments组件语法片段的使用

    React开发中常见的模式之一是将多个元素返回一个组件,Fragments允许您聚合一个子元素列表,并且不会在DOM中添加额外的节点.会Vue的朋友当然会发现,它看起来和Vue的template非常相 ...

  • (完整版)荆霄鹏硬笔行楷钢笔字帖教程:通用汉字7000字教学版

    111 转自今日头条:楷书行书硬笔书法作品,版权归原作者.

  • 前端教程:DjangoURL映射

    现在,我们有一个工作视图在前面的章节中解释.我们希望通过一个URL来访问该视图. Django有他自己 URL映射的方式,现在我们来编辑项目中的 url.py 文件(myproject/url.py) ...

  • 前端教程:DjangoApache配置

    到目前为止,在我们的例子中,都是使用 Django 开发的web服务器.但这种服务器只是用于测试和不适合生产环境.一旦程序发布投入生产,就需要如Apache,Nginx等一个真正的服务器,我们在这一节 ...