路由控制,版本控制,解析器,响应器

路由控制

基本路由写法

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^register/', views.register),
    url(r'^login/', views.Login.as_view()),
    url(r'^test/', views.Authtest.as_view()),
]

第二种写法

必须继承只要继承了ViewSetMixin:

urlpatterns = [
           url(r'^publish/$', views.PublishView.as_view({'get':'list','post':'create'})),
           url(r'^publish\.(?P<format>\w+)$', views.PublishView.as_view({'get':'list','post':'create'})),
           url(r'^publish/(?P<pk>\d+)$',views.PublishView.as_view({'get':'retrieve','delete':'destroy','put':'update'})),
]

第三种

自动生成路由,必须继承ModelViewSet,本质上是继承ViewSetMixin:

            #SimpleRouter 自动生成两条路由
                from rest_framework.routers import SimpleRouter,DefaultRouter
                router=SimpleRouter()
                router.register('publish',views.PublishView)
                、、、、
                url(r'', include(router.urls)),
            #DefaultRouter自动生成四条路由
                from rest_framework.routers import SimpleRouter,DefaultRouter
                router=DefaultRouter()
                router.register('publish',views.PublishView)
                、、、、
                url(r'', include(router.urls)),

解析器

(一般不需要动,项目最开始全局配置一下就可以了)
        作用是控制我的视图类能够解析前端传过来的格式是什么样的
        全局使用:
            在setting中配置:
                REST_FRAMEWORK = {
                    "DEFAULT_PARSER_CLASSES":[
                        'rest_framework.parsers.JSONParser',
                    ]

                }
        全局使用:
            在视图类中:
                parser_classes=[JSONParser,]
                
        -源码流程:
            -当调用request.data的时候去执行解析方法----》根据传过来的编码方式选择一个解析器对象,调用解析器对象的parser方法完成解析

响应器

        -from rest_framework.renderers import JSONRenderer,BrowsableAPIRenderer
        -不用动,就用全局配置即可
        -全局使用:
            -在setting中配置
                'DEFAULT_RENDERER_CLASSES':[xxx,xxx]
        -局部使用:
            -在视图类中配置:
                renderer_classes = [JSONRenderer, BrowsableAPIRenderer]            

版本控制

        -作用用于控制版本
        -全局使用:
            -在setting中配置:    
                'DEFAULT_VERSIONING_CLASS':'rest_framework.versioning.URLPathVersioning',
                'DEFAULT_VERSION': 'v1',  # 默认版本(从request对象里取不到,显示的默认值)
                'ALLOWED_VERSIONS': ['v1', 'v2'],  # 允许的版本
                'VERSION_PARAM': 'version'  # URL中获取值的key
            -路由需要修改
                -url(r'^(?P<version>[v1|v2]+)/test/', views.Test.as_view()),
            -在视图类中就可以通过:request.version取出当前访问哪个版本,相应的取执行相应版本的代码

猜你喜欢

转载自www.cnblogs.com/tuanzibuku/p/11140515.html