Django入门-通用视图】的更多相关文章

文档:https://docs.djangoproject.com/en/1.11/topics/class-based-views/ from django.shortcuts import get_object_or_404, render from django.http import HttpResponseRedirect from django.urls import reverse from django.views import generic from .models impo…
01-介绍 通用视图把视图开发中常用的写法和模式抽象出来,让你编写少量代码就能快速实现常见的数据视图.显示对象列表就是这样一种任务. Django 自带的通用视图能实现下述功能: 1.列出对象并显示单个对象的详细信息.如果创建一个管理会议的应用程序,那么 TalkListView 和 Reg- isteredUserListView 就是列表视图.某一个演讲的页面就是详细信息视图. 2.呈现基于日期的对象,显示为年月日归档页面(带有详细信息),以及“最新”页面. 3.让用户创建.更新和删除对象—…
想在我们有两个视图: def thinkingview(request): user = request.user if request.method == 'GET': return render(request, 'think.html', {'user': user}) elif request.method == 'POST: user = request.user data_form = ThinkingForm(request.POST) if data_form.is_valid(…
1.获取用户请求数据 1.1 request.GET 获取request.method='GET'的数据 request.GET.get('name',None) 1.2 request.POST 获取request.method='POST'的数据 #一般针对传入的单个值的情形,如type='text','redio','password': request.POST.get('name',None) #一般针对传入的多个值的情形,如type='checkbox';<select multip…
view() :     该类为所有类视图的父类,处于最底层,仅仅只对请求参数做校验后,给特定请求方法做特定调用. 用法: url中定位到类方法:Aa.as_view() ——> View.as_view()方法对请求参数做判断后,转到View.dispatch() ——> 找到Aa.get() 或者Aa.post() 或者Aa.其他请求方法 ———>处理完成后返回view()     需要对请求方式做特定处理,可以自行修改dispatch()方法.   源码: class View(o…
上一节完成了视图编写,这一节为应用添加投票功能,也就是表单提交. 5.1编写一个简单的表单 5.2使用通用视图 5.3改良视图 5.1编写一个简单的表单 在网页设计中添加Form元素 polls/templates/polls/detail.html <h1>{{ question.question_text }}</h1> {% if error_message %}<p><strong>{{ error_message }}</strong>…
本教程接Part3开始.继续网页投票应用程序,并将重点介绍简单的表单处理和精简代码. 一个简单表单 更新一下在上一个教程中编写的投票详细页面的模板polls/detail.html,让它包含一个HTML<form> 元素: # polls/templates/polls/detail.html <h1>{{ question.question_text }}</h1> {% if error_message %}<p><strong>{{ err…
在web开发中,最令人头痛的就是一遍又一遍的重复固定的模式.在解决了模板层面和模型层面的重复代码之痛之后,Django使用通用视图来解决视图层面的代码重复. 扩展通用视图 毫无疑问通用视图可以大幅度地加速web开发,但是在许多项目中,总是有通用视图不够用的时候.确实,现今的Django开发者们需要知道如何让通用视图可以处理更多的纷繁复杂的场景. 这是1.3版本的通用视图被重新设计的原因之一.以前,通用视图只是一些带有一些扑朔迷离选择的视图函数,现在更加推荐的方法是通过继承.重写属性或方法来扩展视…
参考官网的投票系统,按照综合案例的流程创建应用polls,主要模块代码如下: test1/polls/models.py import datetime from django.db import models from django.utils import timezone # Create your models here. class Questions(models.Model): question_text = models.CharField(max_length=200) pub…
这周是我入职的第一周,入职第一天看到嘉兴大佬的项目代码.视图中有类方法,我感到很困惑. 联想到之前北京融360的电话面试,问我有无写过类方法……看来有必要了解下视图的类方法,上网搜了很多,原来这就是所谓的“通用视图”. 上班是大小周,这周刚好只上5天:所以早上睡得很晚.好像没什么时间详细写这方面的博客,以后有时间会写的.你可以看看下面的参考文章,我觉得也写得不错. 你可以看我的git代码,如果你有点django基础的话,比如基础的def视图,相信是看得懂的,我也写了很多注释. GIT网址:htt…
Django 1.6 基于类的通用视图 最初 django 的视图都是用函数实现的,后来开发出一些通用视图函数,以取代某些常见的重复性代码.通用视图就像是一些封装好的处理器,使用它们的时候只须要给出特定的参数集即可,不必关心具体的实现.各种通用视图的参考参见:https://docs.djangoproject.com/en/1.6/ref/class-based-views/然后函数式视图的缺点——难以扩展和自定义,开始显现出来.于是 1.3 起 django 开始用类视图来实现通用视图.较于…
创建一个通用视图   抽取出我们代码中共性的东西是一个很好的编程习惯. 比如,像以下的两个Python函数:     def say_hello(person_name): print 'Hello, %s' % person_name def say_goodbye(person_name): print 'Goodbye, %s' % person_name 我们可以把问候语提取出来变成一个参数:     def greet(person_name, greeting): print '%s…
Django中自带了sitemap框架,用来生成xml文件 Django sitemap演示: sitemap很重要,可以用来通知搜索引擎页面的地址,页面的重要性,帮助站点得到比较好的收录. 开启sitemap功能的步骤 settings.py文件中django.contrib.sitemaps和django.contrib.sites要在INSTALL_APPS中 INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth',…
使用通用视图后,Django请求处理过程(以ListView为例):在我们自定义的视图中: class IndexView(ListView): template_name = 'blog/index.html' context_object_name = 'article_list' def get_context_data(self, **kwargs): kwargs['category_list'] = Category.objects.all() return super(IndexV…
修改detail.html,将它变为一个可用的投票页面 <h1>{{ question.question_text }}</h1> {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} <form action="{% url 'polls:vote' question.id %}" method="…
原 Django通用视图APIView和视图集ViewSet的介绍和使用 2018年10月21日 14:42:14 不睡觉假扮古尔丹 阅读数:630   1.APIView DRF框架的视图的基类是 APIView APIView的基本使用和View类似 Django默认的View请求对象是 HttpRequest,REST framework 的请求对象是 Request. Request对象的数据是自动根据前端发送数据的格式进行解析之后的结果. HttpRequest.GET ————> R…
ListView TemplateView DetailView 之前的代码实例基本上都是基于FBV的模式来撰写的,好处么,当然就是简单粗暴..正如: def index(request): return HttpResponse('hello world') 上面的写法,基本接触不到视图函数里面的通用视图.只是在介绍CBV的时候稍微介绍了下引用,大概用法. 导入 之前的导入一直用的是 from django.views import View 这里从view下钻一下会发现: from djan…
在早期,我们认识到在视图开发过程中有共同的用法和模式.这时我们引入基于函数的通用视图来抽象这些模式以简化常见情形的视图开发. 基于函数视图的用法有以下三种: def index(request): return HttpResponse('hello world!') def index(request): result = {'demo':'demo'} return render(request, 'blog/about.html', result) def index(request):…
表单的编写 1. detail.html模版的编写 <h1>{{ poll.question }}</h1> {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} <form action="{% url 'polls:vote' poll.id %}" method="post">…
http://127.0.0.1:8000/boards/1/topics/2/posts/2/edit/ http://127.0.0.1:8000/ #boards/views.py from django.views.generic import UpdateView from django.utils import timezone class PostUpdateView(UpdateView): model = Post fields = ('message', ) template…
通用视图 1. 前言 回想一下,在Django中view层起到的作用是相当于controller的角色,在view中实施的 动作,一般是取得请求参数,再从model中得到数据,再通过数据创建模板,返回相应 响应对象.但在一些比较通用的功能中,比如显示对象列表,显示某对象信息,如果反复 写这么多流程的代码,也是一件浪费时间的事,在这里,Django同样给我们提供了类似的 "shortcut"捷径--通用视图. 2. 使用通用视图 使用通用视图的方法就是在urls.py这个路径配置文件中进…
上一节我们介绍了django视图函数里面几个常用的函数,这节我们来看一下django为我们提供的一些通用视图吧 在最后面有我自己的示例代码,html部分太多了就不贴了 “简单”视图函数 正如名字所言,简单视图函数封装在django.views.generic.simple模块里面,主要有direct_to_template和redirect_to两个简单视图函数,主要使用范围是:没有任何的视图逻辑,仅仅需要重定向一个url django.views.generic.simple.direct_t…
最初 django 的视图都是用函数实现的,后来开发出一些通用视图函数,以取代某些常见的重复性代码.通用视图就像是一些封装好的处理器,使用它们的时候只须要给出特定的参数集即可,不必关心具体的实现.各种通用视图的参考参见:https://docs.djangoproject.com/en/1.6/ref/class-based-views/ 然 后函数式视图的缺点——难以扩展和自定义,开始显现出来.于是 1.3 起 django 开始用类视图来实现通用视图.较于函数,类能够更方便的实现继承和 mi…
django支持类视图,与此同时django为我们提供了许多非常好用的通用视图供我们使用,这其中TemplateView.ListView和DetailView是我们经常使用到的,这里就对TemplateView和ListView做一个简单的介绍 TemplateView:模板视图在Django项目中,我们经常会使用到静态页面,也就是这个页面内的内容是写死的,不需要其他数据的渲染,完成这个任务的时候TemplateView就是一个非常好的选择,例如我们做一个网站肯定需要写一个‘关于本网站’的页面…
一.GenericAPIView GenericAPIView扩展了APIView,为标准列表和详细视图添加了常见的行为. 提供的每个具体通用视图都是一个GenericAPIView或多个mixin类组合在一起而构建的. 例如: BookView视图类继承自: ListModelMixin:用于显示所有图书 CreateModelMixin:添加一本书 GenricAPIView:继承自APIView,提供as_view()等,获取当前视图类中queryset和serializer_class…
Django基础知识 一. 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回. 如果要动态生成HTML,就需要把上述步骤自己来实现.不…
Django入门与实践-第17章:保护视图 Django 有一个内置的视图装饰器 来避免它被未登录的用户访问: 现在如果用户没有登录,将被重定向到登录页面: 现在尝试登录,登录成功后,应用程序会跳转到原来所在的位置. Django入门与实践-第18章:访问已登录用户 现在我么可以改进 new_topic 视图,将发布主题的用户设置当前登录的用户,取代之前直接从数据库查询出来的第一个用户, 之前这份代码是临时的,因为那时候还没有方法去获取登录用户,但是现在可以了: 有两个关键字参数,pk用于唯一标…
Django 入门 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模型,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的.并于2005年7月在BSD许可证下发布.这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的. Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值: M 代表模型(Model):负责…
Django入门笔记 **文档包含Django安装包.学习的笔记.代码等 安装 Django参考附件,只需要把附件拷贝到你需要的目录就行.Django是1.8.16版本 Python:在附件中,其中有Django需要的依赖包 编辑器:Aptana,一个强大的IDE工具,可以在上边新建模板,支持各种语言 Django项目创建 **可以用附件中的工程目录或者自己新建 新建工程-创建Django 新建工程-配置Django工程 工程创建完成后,会在工程目录中自动创建以下几个py文件 settings.…
前言 欢迎来到系列教程的第六部分!在这篇教程中,我们将详细探讨基于类的视图(简称CBV).我们也将重构一些现有的视图,以便利用内置的基于类的通用视图(Generic Class-Based Views). 这篇教程我们还将讨论许多其他主题,例如如何使用分页,如何使用markdown以及如何添加简单的编辑器.我们还将探索一个名为 Humanize 的内置软件包,用于对数据进行“人为操作”. 好了,伙计们!让我们来实现一些代码.今天我们还有很多工作要做! 视图策略 到头来,所有的Django视图其实…