5 解析器、url路由控制、分页、渲染器和版本

1

2

3

4 渲染器

1、demo

主urls

from django.contrib import admin
from django.urls import path,re_path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/',include('api.urls'))
]

api.urls

from django.urls import path,re_path,include

from api.views import course
urlpatterns = [
    re_path('^course',course.CourseViews.as_view())
]

view

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.renderers import JSONRenderer,BrowsableAPIRenderer

from django.shortcuts import HttpResponse

class CourseViews(APIView):

    # renderer_classes = [JSONRenderer,BrowsableAPIRenderer]
    renderer_classes = [JSONRenderer]

    def get(self,request,*args,**kwargs):
        self.dispatch   # 快速找dispatch
        return Response('course...')  # 出错了,没有在app中注册 rest_framework
        # return HttpResponse('course...')

settings

INSTALLED_APPS = [
    ...
    'rest_framework',
]

...
REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': ['rest_framework.renderers.JSONRenderer',
                                 'rest_framework.renderers.BrowsableAPIRenderer'],
}

2、rest_framework如何渲染的

 

 

 2.渲染器 JSONRenderer和BrowsableAPIRenderer

一般情况用json即可

 

restframe实质:把你的json数据嵌套到html中显示

 

3.全局配置

 源码

我的settings设置

5 版本 /api/v1/

1、源码

 

 

  局部配置

 2. 类

实质:django中request的get方法

不同verison 能拿到不同的版本 

  

 指定v1 v2

源码

全局配置 (不推荐这种)

test

 

默认的

推荐版本

 version会传到kwargs

全局配置过(推荐版本)

支持的版本传参  

 5个类2个不用

 8、终极版本:笔记

    2. 版本 
        原理:要了解
        使用:
            1. 添加配置
                REST_FRAMEWORK = {
                    .... 
                    'DEFAULT_VERSIONING_CLASS':'rest_framework.versioning.URLPathVersioning',
                    'ALLOWED_VERSIONS':['v1','v2'], # 允许的版本
                    'VERSION_PARAM':'version', # 参数
                    'DEFAULT_VERSION':'v1', # 默认版本
                    ....
                }

            2. 设置路由 
                
                s9luffycity/urls.py
                    urlpatterns = [
                        #url(r'^admin/', admin.site.urls),
                        url(r'^api/(?P<version>\w+)/', include('api.urls')),
                    ]
                
                api/urls.py 
                    urlpatterns = [
                        url(r'^course/$', course.CourseView.as_view()),
                    ]
            
            3. 获取版本 
                request.version 获取版本  

猜你喜欢

转载自www.cnblogs.com/venicid/p/11308961.html