django class-based view 考古

django 中的view中进化史:

  1、在“天地初开”的时候django中的view是通过函数来定义的、函数接收一个request并以一个response作为返回;

  对于这个request是通过post、get、head还是别的什么方式来到服务器端的、要在函数中进行测试,然后就可以

  针对不同的请求进行不同的处理了; 一个典型的通过函数定义的View看起来像下面的样子

def MethodTest(request,*args,**kwargs):
    if request.method==‘GET‘:
        return HttpResponse("这是一个get请求")
    elif request.method==‘POST‘:
        return HttpResponse("这是一个post请求")
    else:
        return HttpResponse("others")

  这样写代码要面对的问题 1):如果view一多就会出现许多重复的代码、比如说上面函数中对请求类型的测试;2):不利于代码的重用;

  为了解决“重复”和“代码冗余”的问题,基于“class”的View就出现了。

  2、django把一些能用的代码“抽象”到了View这个类中、如果我们定义的view都继承自这个类、那么也就可以重用这部分代码了;

class MethodTest(View):
    def get(self,request,*args,**kwargs):
        return HttpResponse("这是一个get请求")

    def post(self,request,*args,**kwargs):
        return HttpResponse("这是一个post请求")

  不同的请求走不同的方法进行处理、事实上View类上有一个dispatch方法在这个方法中对request.method进行测试、然后根据不同

  的请求方法调用不同的方法。

-----

原文地址:https://www.cnblogs.com/JiangLe/p/9028618.html

时间: 2024-10-09 11:27:57

django class-based view 考古的相关文章

Django Function Based View(FBV)和Class Based View (CBV)对比

一.FBV处理过程 首先来看一下FBV逻辑过程: 1.简单过程(借用官方示例): 1 urls: 2 from django.conf.urls import url 3 4 from . import views 5 6 urlpatterns = [ 7 url(r'^$', views.index, name='index'), 8 ] 9 10 views: 11 from django.http import HttpResponse 12 13 from .models import

Django 类方式view进行进行用户验证

问题: Django中,view的书写方式有两种,一种是def函数方式,一种是class方式,函数方式通过@login_required装饰器标记函数,就必须通过用户验证,而类,则没办法通过此方法进行标记 那,如何解决这个问题? 利用类的继承方式,写一个基类,需要验证的class view类,首先继承这个基类,后面所有通过此类的url都需要进行用户验证登录,因为可能有许多的view需要使用该类,需要独立出来,建立在utils目录下,起名mixin_is_login.py,然后在各种需要的view

Django框架 之 view视图

浏览目录 概述 简单的视图 HttpRequest对象 CBV和FBV 给视图加装饰器 Request对象 Response对象 JsonResponse对象 Django shortcut functions 一.概述 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项

python3开发进阶-Django视图(View)的常见用法

阅读目录 简述Django的View(视图) CBV和FBV Request对象和Response对象 Django组件(render,redirect)详解 一.简述Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项目目录下面. 除此之外

Django视图系统(view)

一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项目目录下面. 一. CBV和FBV 1. FBV是基于函数的view def add_class(request): if request.method == "POST": class_name = reque

Django视图(View)

Django 视图 声明:文章部分内容来源https://www.cnblogs.com/maple-shaw/articles/9285269.html 视图的概念:一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片 视图的规范:无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项目目录下面.除此之外没有更多的要求了--可以说

django框架The view account.views.register didn't return an HttpResponse object.错误的解决办法

对提交方法不是POST的方法没有添加分支进行判断 1. 注意# 判断post/get 分支判断提交方法 django框架The view account.views.register didn't return an HttpResponse object.错误的解决办法 原文地址:https://www.cnblogs.com/bigfacecatovo/p/11980389.html

Django views 中 View decorators

decorators(装饰器) 1. require_http_methods 在django.views.decorators.http中,可以用来限制请求的权限. require_http_methods(request_method_list), 这样只有request_method_list中的方法可以得到结果,否则view不会接受请求.看下面官方例子,@require_http_methods(["GET","POST"]),结果是只有GET,POST的请

Django URLs error: view must be a callable or a list/tuple in the case of include()

我现在的Django version 是 1.11.2, the folling solution is come from stackoverflow:==================================================================-----question: After upgrading to Django 1.10,I get the error: TypeError: view must be a callable or a list