Django drf:cbv(class base view)源码分析

cbv是基于类的视图

# 首先要在路由层配置:

# 找到类绑定方法as_view

# 点开dispatch的方法

# http_method_names其实就是方法的列表

整个流程:

  1.写一个基于类的视图

  2.然后在路由层配置,第二参数写as_view,加括号执行

  3.由于父级中没有需要到view中找方法,as_view方法其实是一个闭包函数,返回的一个函数地址加括号执行

  4.as_view中执行了dispatch方法,就是将视图类中的参数拿到,和列表中方法比较,如果有返回执行,没有就提示错误信息

原文地址:https://www.cnblogs.com/wuzhengzheng/p/10426858.html

时间: 2024-10-03 16:32:35

Django drf:cbv(class base view)源码分析的相关文章

Django之admin的使用及源码分析

一.admin组件使用 Django本身提供了基于 web 的管理工具.其管理工具是django.contrib的一部分,可在settings.py中的 INSTALLED_APPS 看到: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'dj

Django的rest_framework的分页组件源码分析

前言: 分页大家应该都很清楚,今天我来给大家做一下Django的rest_framework的分页组件的分析:我的讲解的思路是这样的,分别使用APIview的视图类和基于ModelViewSet的视图类两种方式实现分页的功能,同时我也会介绍两个分页的类,PageNumberPagination类和LimitOffsetPagination,希望能对大家有所帮助! 今天的博客主要的这样的,先讲解基于APIView类的两种分页类的实现方式,然后在讲解基于ModelViewSet类的两种分页类的实现方

Django rest framework 限制访问频率(源码分析三)

基于 当用发出请求时 首先执行dispatch函数,当执行当第二部时: #2.处理版本信息 处理认证信息 处理权限信息 对用户的访问频率进行限制 self.initial(request, *args, **kwargs) 进入到initial方法: def initial(self, request, *args, **kwargs): """ Runs anything that needs to occur prior to calling the method han

Python学习---Django关于POST的请求解析源码分析

当有请求到来之后,先判断请求头content_type是不是[application/x-www-form-urlencoded] --> 如果是则将请求数据赋值给request.body然后解析为字典形式的数据后赋值给request.post 这样我们就可以用request.POST.get('username")获取数据了 --> 如果不是,则直接将请求数据赋值给request.body之后并不赋值给request.post,此时POST内的数据为空 原文地址:https://w

Django CBV流程及源码分析

Django 实现视图的方法有两种,一种是FBV(function base view)即基于函数的视图,还一种高级的就是CBV(class base view),通过阅读源码你会发现它本质上还是基于FBV的.FBV的优点是用法和写法都比较简单适合刚开始学的同学使用,缺点就是不能用的面向对象的几大特性只用函数进行封装代码多的时候会显得代码很冗余,而CBV就很好的解决了这些问题.并且Django官方在后面的Django版本中加入了很多基于CBV的类,方便我们快速开发.我们先简单的看下Django在

Django框架 --CBV源码分析、restful规范、restframework框架

一.CBV源码分析 1.url层的使用CBV from app01 import views url(r'book/',views.Book.as_view()) 2.as_view方法 as_view是一个类方法,实际上是一个闭包函数(内层函数包含对外层作用域的使用) 请求来了以后,调用as_view方法,调用函数中的view方法,view方法是调用了dispatch方法 @classonlymethod def as_view(cls, **initkwargs): def view(req

REST、DRF(View源码解读、APIView源码解读)

一.REST 1.什么是编程? 数据结构和算法的结合 2.什么是REST? 首先我们回顾下我们之前的图书管理系统,我们设计了这样的URL,如下: 127.0.0.1:9001/books/ 127.0.0.1:9001/get_all_books/ 访问所有的数据 127.0.0.1:9001/books/{id}/ 127.0.0.1:9001/books/{id}?method=get 访问单条数据 127.0.0.1:9001/books/add/ 127.0.0.1:9001/books

Django中CBV和Restful API中的APIView源码分析

Django中CBV和Restful API中的APIView源码分析 python的Django框架的视图处理可以用FBV, 也可以采用CBV.首先定义一个CBV视图: from django.views import Viewfrom django.http import JsonResponseclass Book(View):    def get(self, request):        ll = [{'key':value}]        return JsonResponse

django中CBV源码分析

前言:Django的视图处理方式有两种: FBV(function base views) 是在视图里基于函数形式处理请求. CBV(class base views)是在视图里基于类的形式处理请求. Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承.封装.多态).所以Django在后来加入了Class-Based-View.可以让我们用类写View.这样做的优点主要下面两种: 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承) 可以

Django rest framework源码分析(一) 认证

一.基础 最近正好有机会去写一些可视化的东西,就想着前后端分离,想使用django rest framework写一些,顺便复习一下django rest framework的知识,只是顺便哦,好吧.我承认我是故意的,因为我始终觉得,如果好的技术服务于企业,顺便的提高一下自己.大家都很开心不是不.再次强调一下,真的只是顺便. 安装吧 pip install djangorestframework 1.2.需要先了解的一些知识 理解下面两个知识点非常重要,django-rest-framework