drf请求生命周期

目录

drf请求生命周期

多app创建规范

django框架:--url管理方法
    
    1.创建app:
        python manage.py startapp my_app_name
    2.创建app --urls:
        from django.conf.urls import url
        from . import  views
        urlpatterns = {
            url(r'^book/$',views.BookAPIView.as_view()),
        }

    3.urls配置 :
        1.settings内添加 app;
        2.在urls内配置:
    from django.conf.urls import url, include
    from django.contrib import admin
    urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/', include('my_app.urls')),
    ]
--》创建新的app !!

drf框架:

-->原生Django与drf比较:drf不受csrf认证限制!!
    Django REST framework is a powerful and flexible toolkit works with Django for building Restful Web APIs.

    DRF是一个强大灵活的Django工具包,用于在Web后台构建Restful接口
优势:
    提供了可视化的API调试界面,开发者可以在线测试接口
    提供了各种开箱即用的API认证授权工具,如OAuth2
    提供了orm数据序和非orm数据的序列化支持
    支持函数视图
    大量的文档和社区支持

import rest_framework

from rest_framework.views import APIView
from rest_framework.request import Request
from rest_framework.response import Response
from rest_framework.exceptions import APIException
from rest_framework.pagination import PageNumberPagination
from rest_framework.settings import APISettings
from rest_framework.parsers import JSONParser
from rest_framework.filters import OrderingFilter

APIView的请求生命周期:

流程:
   1.APIView 继承View类,重写view类内的 as_view(),dispatch 方法
   2.重写的as_view方法,主体还是View的as_view,只是在返回视图view函数地址时,局部禁用csrf认证
    3.重写的dispatch方法: 
       在执行请求逻辑前:请求模块(二次封装request)、解析模块(三种数据包格式的数据解析)
      在执行请求逻辑中:异常模块(执行出现任何异常交给异常模块处理)
      在执行请求逻辑后:响应模块(二次封装response)、渲染模块(响应的数据能JSON和页面两种渲染)

小结:
    APIView的as_view(局部禁用csrf) => 走父级的as_view调用dispatch分发请求 => APIView自己重写了dispatch,使用自己完成分发 => 分发前完成request二次封装、数据解析 => 三大认证 => 请求的实际响应(自己的视图类的处理分发) => 出现了异常,就会交给异常模块处理异常 => 响应模块完成响应、渲染模块可以json或浏览器两种方式渲染

猜你喜欢

转载自www.cnblogs.com/shaozheng/p/12093331.html