首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DRF框架(一)——drf请求生命周期是什么?请求模块request咋用?渲染模块render咋用?

目录 安装DRF框架 drf请求生命周期流程 请求模块:request对象 渲染模块: 安装DRF框架 pip install djangorestframework drf请求生命周期流程 根据应用中...urls.py,走as_view方法,但是视图类没有该方法,所以请求走的是APIView的as_view方法 在APIView的as_view调用父类(django原生View)的as_view,同时还禁用了...csrf 认证 在父类(django原生View)的as_view中dispatch方法请求走的又是APIView的dispatch #因为APIView也可以走dispatch,视图类是先继承...中,所有数据包数据都被解析到data中 get请求:url中拼接的参数通过request.query_params获取 post请求:所有请求方式所携带的数据包都是通过request.data获取 请求模块最终的结论就是...], } 自定义局部配置:某一个或一些实体类单独处理,在views.py视图类中提供对应的类属性 # 在setting.py中配置REST_FRAMEWORK,完成的是全局配置,所有接口统一处理

93010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    不会DRF?源码都分析透了确定不来看?

    在settings的app中注册 INSTALLED_APPS = [ 'rest_framework' ] models.py from django.db import models class...,这里尽量在body体里写全参数 局部修改:修改id为1的数据,修改啥写啥 删除一条数据:删除id为2的数据 CBV源码流程分析 因为DRF框架里大部分都是基于CBV(视图类)...第二个参数是函数内存地址,CBV的底层也是FBV,as_view是类的绑定方法,自己的类中没有去父类(View)找,as_view()执行完,也是一个内存地址,内存地址是谁的?...,也还是类绑定方法,Test没有as_view方法,去继承的APIView中找,这次不需要和Django一样去View中找了,庆幸的是APIView中有as_view方法,核心源码如下: @classmethod...),这里跳转了一下,其实看了父类(View)的源码是和上面Django中写视图类继承的View是一样的,这里的(APIView)的as_view只是进行了简单处理和去掉了csrf中间件校验,真实使用的还是

    1.3K10

    DRF类视图让你的代码DRY起来

    使用APIView rest_framework.views.APIView是DRF封装的API视图,继承了django.views.generic.base.View: ?...因为path()的参数必须是可调用的,在源码中能看到elif callable(view): def _path(route, view, kwargs=None, name=None, Pattern...再简单点说,mixin只不过是实现多重继承的一个技巧而已。 这下应该清楚了。...这是DRF提供的通用API类视图,mixins只提供了处理方法,views.py中的类要成为视图,还需要继承GenericAPIView,GenericAPIView继承了本文第一小节提到的rest_framework.views.APIView...东方说 学到这里,已经开始感受到了Django REST framework的强大之处了,我觉得学一个框架,不仅要看如何使用,还需要了解它的设计思路和底层实现,这样才能更好的总结为自己的编程思想,写出更漂亮的代码

    55710

    学生宿舍管理系统(jsp+mysql).rar

    改了views.py代码后,需要同时修改snippets/urls.py: from django.urls import path from rest_framework.urlpatterns import...因为path()的参数必须是可调用的,在源码中能看到elif callable(view): def _path(route, view, kwargs=None, name=None, Pattern...再简单点说,mixin只不过是实现多重继承的一个技巧而已。 这下应该清楚了。...: 这是DRF提供的通用API类视图,mixins只提供了处理方法,views.py中的类要成为视图,还需要继承GenericAPIView,GenericAPIView继承了本文第一小节提到的rest_framework.views.APIView...东方说 学到这里,已经开始感受到了Django REST framework的强大之处了,我觉得学一个框架,不仅要看如何使用,还需要了解它的设计思路和底层实现,这样才能更好的总结为自己的编程思想,写出更漂亮的代码

    3.7K00

    Django REST Framework-路由器(一)

    Django REST Framework(以下简称DRF)是基于Django框架构建的Web API框架。...在DRF中,路由器(Router)是一个非常有用的工具,可以帮助我们轻松地定义API的路由,实现快速、可维护的API开发。一、路由器的作用在DRF中,路由器的主要作用是将URL和视图函数绑定在一起。...路由器可以根据视图函数的名称和参数,自动生成URL,并将请求分发到对应的视图函数中。使用路由器可以避免手动编写URL配置的繁琐和容易出错。二、路由器的使用安装DRF在使用路由器之前,需要先安装DRF。...(1)基于视图集在DRF中,视图集是一组视图函数的集合,可以实现类似于CRUD的操作。...这可以通过在urls.py文件中添加以下代码实现:from django.urls import path, includeurlpatterns = [ path('', include(router.urls

    74141

    django-rest-framewor

    源码繁琐,多说无益,耐心细读官方文档: https://www.django-rest-framework.org/ 个人总结: REST是一种软件架构设计风格,不是标准,也不是具体的技术实现,只是提供了一组设计原则和约束条件...2 解析器组件 (用来解析数据的请求的组件)   Django并不能处理请求协议为application/json编码协议的数据   注意: DRF解析器会封装到View中的parsers内,在视图函数被调用时...定义需要返回的字段(字段类型可以与model中的类型不一致,参数也可以调整),字段名称必须与model中的一致 在GET接口逻辑中,获取QuerySet 开始序列化:将QuerySet作业第一个参数传给序列化类...程序启动,开始初始化,获取配置信息,获取视图类并加载到内存中,获取url及视图类的对应关系 开始绑定视图类和url的对应关系,执行as_view()方法 as_view()方法被执行的时候传递了参数,为字典形式...:{ “get”: “retrieve”, “delete”: “destroy”, “put”: “update” } 上一步中执行as_view()方法传递参数的目的是为了完成优化,将delete请求方式重新命名为不同的函数

    1.6K10

    Django_rest框架实践项目(二) 为什么很少的代码就可以实现增删改查?rest框架如何实现分页?页面实现登录按钮?权限控制

    为什么很少的代码就可以实现增删改查? 因为rest框架的路由,我们看我们写的路由 ?...', namespace='rest_framework')), ] 以上的情况就充分的说明了,我们在代码里面用rest框架写一个路由,就相当于写了增删改查的4个路由,所以只需要简单的配置,项目就可以实现对数据库的增删改查...在user表里面要显示这个用处于哪个组,直接写字段groups ,默认就是这样写 user_set groups 默认 分页功能 现在我们在rest框架浏览器页面查看,会将数据都展示,但是我们想要实现分页...要实现登录的按钮,那么在url里面要加一句代码 api-auth这个名字是随便起的,后面就是规定好的 url(r’^api-auth/’, include(‘rest_framework.urls’...总结 setting 对于rest框架,在setting设置的时候,所有 的东西都是在REST_FRAMEWORK 里面进行设置,后面就是字典。

    92010

    Django-DRF | 请求

    Django REST框架构建Web API。...Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...默认输入url的请求方式即为get,当请求方式为get时,若带有需要传递的其他参数,则会将该参数的name和value补充在url中一并提交,post方式则将数据放在内容中一并提交,不再url中显示。...在浏览器发送的request数据包的header中,可以看到这些内容,例如: 一、CBV 视图里使用类处理请求,在url中一个路径对应一个类。...()方法,是父类里面的方法 ] 视图函数 from django.views import View from django.http import HttpResponse class IndexView

    66020

    APIview的请求生命周期源码分析

    APIview的请求生命周期源码分析 Django项目启动=>加载settings文件=>加载models、views、urls文件,执行urls文件,调用视图类的as_view()方法。 ?...以上就是Django rest framework源码的请求流程,下面我们粗略看一下请求模块、解析模块、相应模块、异常处理模块、渲染模块的源码。...函数,携带异常对象和异常相关信息,在exception_handler函数中完成异常信息的返回以及异常信息的logging日志。...在Django的settings文件中进行配置: REST_FRAMEWORK = {'EXCEPTION_HANDLER': 'api.exception_handler.exception_handler...'} 在exception_handler文件中重写exception_handler # 一定要在settings文件中将异常模块配置自己的异常处理函数 from rest_framework.views

    86320

    Python进阶39-drf框架(一)

    """ 接口:联系两个物质的媒介,完成信息交互 web程序中:联系前台页面与后台数据库的媒介 web接口组成: url:长得像返回数据的url链接 请求参数:前台按照指定的key提供数据给后台...实现接口准备工作 ---- 路由分发 在api目录下创建urls.py,并且导入include rest_ful/urls.py from django.conf.urls import url,include...APIView的as_view函数 2) 在APIView的as_view调用父类(django原生)的as_view,还禁用了 csrf 认证 3) 在父类的as_view中dispatch分发请求走的又是..._request = request 将原生request作为新request的_request属性 # 在rest_framework.request.Request的__getattr__方法中...配置文件的DEFAULT_RENDERER_CLASSES """ ---- 自定义drf设置 全局配置 所有视图类统一处理,在项目的settings.py中 REST_FRAMEWORK = {

    4.1K30

    drf框架中所有视图及用法

    0909自我总结 drf框架中所有视图及用法 一.drf框架中的所有视图类 from django.views import View from rest_framework import views,...generics, mixins, viewsets 最基础:django自带的views类 drf框架中最基础的视图类:views.APIView drf框架中工具视图:generics GenericAPIView...自带的views进行相关方法的分装 二.viewsets视图集 ViewSetMixin:视图集工具 - 重写as_view - 将 请求方式 映射到视图类中的 指定方法 我们在路由中 类名.as_view...generics视图一样的两个参数,且创建的视图类必须继承其方法的类为父类 五.generics中继承GenericAPIView的子类使用 class BookRetrieveUpdateAPIView...居然有什么方法看源码即可ctrl+左键看源码 六自定制视图 本来get他就只会找类中get方法我们可以对其设置让他找我们对于的名称 路由层 from django.conf.urls import url

    1.8K30

    Django rest Framework入门 四 :视图

    在Django rest Framework入门 二 :DRF框架初体验中其实已经使用了视图了(book.views里面的代码),而且就是实际开发中最常用的模式,但是那是经过DRF框架高度封装的,代码的可读性不好...Django中不同的是,在视图类的as_view方法中添加了一个字典参数,字典中的内容是HTTP请求方法和对应的函数名的键值对。...这里事实上是DRF框架对路由的分发机制在Django的基础上做了优化,让我们可以将所有的请求方法都写在一个视图类中,而不用像在Django中那样必须区分列表类视图还是详情类视图。...在Django中,由于查单一和查多个都是由GET请求方法触发的,所以不能写在同一个类中,必须拆分到详情类和视图类中。...API的话就需要修改url中as_view的参数 ```python class BookInfoModelViewSet(ModelViewSet): '''利用ModelViewSet实现图书信息视图

    11910

    测试开发进阶(二十九)

    再次优化 查看 rest_framework.generics.CreateAPIView rest_framework.generics.ListAPIView 可以看到很多重复的代码 ?...第二个参数viewset为视图集「不要加as_view」 将自动生成的路由添加到列表中 from django.urls import path, includefrom projects import...# 第一个参数prefix为路由前缀,一般添加为应用名称即可# 第二个参数viewset为视图集「不要加as_view」router.register(r'projects',views.ProjectsViewSet...)urlpatterns = [ # 将自动生成的路由添加到列表中 path('',include(router.urls))] action 自定义action from rest_framework.decorators...参数用于指定该动作支持的请求方法,默认为get detail用于指定该动作要处理的是否为详情资源对象「url是否需要传递pk值」 在 url.py中添加 path('project/names/', views.ProjectsViewSet.as_view

    67110

    Django与drf 源码视图解析

    0902自我总结 Django 与drf 源码视图解析 一.原生Django CBV 源码分析:View """ 1)as_view()是入口,得到view函数地址 2)请求来了调用view函数,内部调用...""" 1)as_view()是入口,得到view函数地址,在范围view函数地址时局部禁用csrf认证 2)请求来了调用view函数,内部调用(APIView类的)dispatch函数完成请求分发 3...做的处理 as_view: 就干了一件事,禁用csrf认证 dispatch: 1)二次封装request 2)三大认证 四.drf 的局部渲染和全局渲染 通过看了源码我们对于渲染内容是JSONRenderer...from rest_framework.renderers import BrowsableAPIRenderer 局部设置 在我们定义基础APIView的类添加renderer_classes...# drf配置 REST_FRAMEWORK = { # 响应的渲染模块 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer

    58620

    RESTful源码笔记之RESTful Framework的APIview, Viewset总结分析

    0x00  引言 官方文档:http://www.django-rest-framework.org/ drf为我们提供强大的通用view的功能,本博客对这些view进行简要的总结分析。...return self.list(request, *args, **kwargs) 在这个例子中,继承了mixins中的ListModelMixin,在get( )方法中,调用了它的list()方法,...重写as_view的方法为我们提供了绑定的功能,我们在设置url的时候: # 进行绑定 courses = CourseViewSet.as_view({ 'get': 'list',...url,不会导致url过多而混乱,而且还能实现http方法与mixins中的相关方法进行连接。...在viewset中,还提供了两个以及与mixins绑定好的ViewSet,当然,这两个ViewSet完全可以自己实现: class ReadOnlyModelViewSet(mixins.RetrieveModelMixin

    1K10

    Django REST framework+Vue 打造生鲜超市(四)

    五、商品列表页 5.1.django的view实现商品列表页 (1)goods/view_base.py 在goods文件夹下面新建view_base.py,为了区分django和django rest...framework的view 利用Django的view实现返回json数据 # goods/view_base.py from django.views.generic import View from...django的serializer虽然可以很简单实现序列化,但是有几个缺点 字段序列化定死的,要想重组的话非常麻烦 从上面截图可以看出来,images保存的是一个相对路径,我们还需要补全路径,而这些drf...都可以帮助我们做到 以上写了这么多只是为了引入django rest framework和简单介绍django的序列化用法,下面就是重点讲解django rest framework了 5.3.APIview...5.7.viewsets和router完成商品列表页 主要用到viewsets中的GenericViewSet ?

    4.8K90
    领券