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

Posted tuanzibuku

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了路由控制,版本控制,解析器,响应器相关的知识,希望对你有一定的参考价值。

路由控制

基本路由写法

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取出当前访问哪个版本,相应的取执行相应版本的代码

 

以上是关于路由控制,版本控制,解析器,响应器的主要内容,如果未能解决你的问题,请参考以下文章

DRF url控制 解析器 响应器 版本控制 分页(常规分页,偏移分页,cursor游标分页)

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

url,解释器,响应器,版本控制,分页

(了解)rest_framework之版本控制, 响应器, url控制器

路由控制和响应器

在自定义容器视图控制器中调用 endEditing 会隐藏键盘但不会更改键盘响应器