zoukankan      html  css  js  c++  java
  • 路由控制,版本控制,解析器,响应器

    路由控制

    基本路由写法

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

  • 相关阅读:
    MySQL修改时区的方法小结
    MYSQL日期 字符串 时间戳互转
    2017php经典面试题
    PHP获得真实客户端的真实IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
    开放api接口签名验证
    MySql之ALTER命令用法详细解读(转)
    easyUI datagrid 清空
    webApi文档好帮手-apidoc使用教程
    驼峰命名和下划线命名互转php实现
    SQL Server 数据导入Mysql详细教程
  • 原文地址:https://www.cnblogs.com/tuanzibuku/p/11140515.html
Copyright © 2011-2022 走看看