IT教程 ·

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期

目次

  • APIView的要求生命周期
  • 重写的as_view要领
  • 重写的dispatch要领
  • drf路由分发设置
  • 剖析模块设置
  • 衬着模块设置
    • 浏览器衬着翻开
    • 浏览器衬着封闭
    • 结论
  • drf运用背景admin
  • drf序列化组件
    • serializers.py:
    • views.py:单查群查
    • 测试:
    • 连表操纵
    • 设置图片和性别

APIView的要求生命周期

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第1张

重写的as_view要领

"""
1)as_view要领完成路由设置,返回设置函数是 csrf_exempt(view),也就是禁用了csrf认证划定规矩
结论:一切继续APIView的子类,都不受csrf认证划定规矩的限定

2)将要求处置惩罚的使命交给dispath要领完成
"""

重写的dispatch要领

"""
完成了三大中心使命:
1)要求对象的处置惩罚:要求衬着模块

2)要求历程的处置惩罚:三大认证模块 => 本身代码完成处置惩罚

3)要求结果的相应:非常模块处置惩罚非常相应 | 相应衬着模块处置惩罚平常相应
"""

drf路由分发设置

主路由:

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/', include('api.urls'))
]

副路由:

from django.conf.urls import url

from . import views
from django.views.static import serve
from d_priect import settings
urlpatterns = [
    url(r'users/$',views.UserAPIView.as_view()),
    url(r'users/(?P<pk>d+)/$',views.UserAPIView.as_view()),
    
    # 暴露文件
    url(r'^media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}),

]

视图:

注重:rest_framework须要先注册,在settings.py中:

INSTALLED_APPS = [


    # drf框架的部份功用是依赖于注册后的,一切drf须要在app中注册
    'rest_framework',
]
from rest_framework.views import APIView
from rest_framework.response import Response

class UserAPIView(APIView):
    def get(self,request,*args,**kwargs):
        return Response('get ok')

    def post(self,*args,**kwargs):
        return Response('post ok')

剖析模块设置

from rest_framework.settings import APISettings
# 自定义drf设置
REST_FRAMEWORK = {
    # 剖析模块
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',  # json数据类型
        'rest_framework.parsers.FormParser',  # urlencoded数据类型
        'rest_framework.parsers.MultiPartParser'  # from-data数据类型
    ],
    # 衬着模块
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer', # 数据衬着
        'rest_framework.renderers.BrowsableAPIRenderer',  # 浏览器衬着
    ],
}

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第2张

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第3张

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第4张

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第5张

衬着模块设置

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第6张

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第7张

浏览器衬着翻开

他人晓得你背景用什么写的,好进击你

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第8张

浏览器衬着封闭

结果:数据平常衬着,浏览器只要数据。他人不晓得你背景数据怎样写的,不容易进击你

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第9张

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第10张

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第11张

结论

当项目没上线的时刻:平常浏览器衬着翻开

当项目上线:为了平安平常把浏览器衬着封闭

drf运用背景admin

如今admin.py种写入:然后一切平常

from django.contrib import admin

from . import models

admin.site.register(models.User)

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第12张

drf序列化组件

serializers.py:

from rest_framework import serializers


from . import models
class UserModelSerializer(serializers.ModelSerializer):

    class Meta:
        # 该序列化类是辅助于谁人Model类的
        model = models.User

        fields = ['name', 'age', 'height']

views.py:单查群查

from . import models

from . import serializers


class UserAPIView(APIView):
    def get(self, request, *args, **kwargs):
        pk = kwargs.get('pk')
        if pk:  # 单查
            # 1)数据库交互拿到资本obj或资本objs
            # 2)数据序列化成能够返回给前台的json数据
            # 3)将json数据返回给前台
            obj = models.User.objects.get(pk=pk)
            serializer = serializers.UserModelSerializer(obj,many=False)  # # many=True示意:操纵多个数据.默以为False
            return Response(serializer.data)
        else:  # 群查
            # 1)数据库交互拿到资本obj或资本objs
            # 2)数据序列化成能够返回给前台的json数据
            # 3)将json数据返回给前台
            queryset = models.User.objects.all()
            serializer = serializers.UserModelSerializer(queryset, many=True)  # many=True示意:操纵多个数据
            return Response(serializer.data)

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第13张

测试:

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第14张

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第15张

连表操纵

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第16张

设置图片和性别

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第17张

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第18张

测试:

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第19张

drf路由分发、剖析/衬着模块设置、运用admin、自动序列化设置、APIView的要求生命周期 IT教程 第20张

参与评论