zoukankan      html  css  js  c++  java
  • rest framework-版本-长期维护

    ###############  版本   ###############

    # 
    # 版本的问题:
    # rest_framework.versioning.URLPathVersioning
    # 一般就是这种,http://127.0.0.1:8000/api/v2/course/
    # 只要配置好了,以后就很少动了,
    # 原理要知道
    # 使用:
    # 1,添加配置,
    # 2,设置路由,
    # 3,获取版本,

    ############### 全局配置  注意,通常我们是不会单独给某个视图设置版本控制的 ###############

    settings.py中

    REST_FRAMEWORK = {
        ...
        'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.URLPathVersioning',
        'DEFAULT_VERSION': 'v1',  # 默认的版本
        'ALLOWED_VERSIONS': ['v1', 'v2'],  # 有效的版本
        'VERSION_PARAM': 'version',  # 版本的参数名与URL conf中一致
    }

    urls.py中

    urlpatterns = [
        ...
        url(r'^(?P<version>[v1|v2]+)/publishers/$', views.PublisherViewSet.as_view({'get': 'list', 'post': 'create'})),
        url(r'^(?P<version>[v1|v2]+)/publishers/(?P<pk>d+)/$', views.PublisherViewSet.
    as_view({'get': 'retrieve', 'put': 'update', 'delete': 'destroy'})), ]

    我们可以在视图中自定义具体的行为,下面以不同的版本返回不同的序列化类为例

    class PublisherViewSet(ModelViewSet):
    
        def get_serializer_class(self):
            """不同的版本使用不同的序列化类"""
            if self.request.version == 'v1':
                return PublisherModelSerializerVersion1
            else:
                return PublisherModelSerializer
        queryset = models.Publisher.objects.all()

    ###############  版本   ###############

    ###############  版本   ###############

    ###############  版本   ###############

  • 相关阅读:
    SQL SERVER 2008的元数据视图
    SQL Server 2008 中的 XML 功能
    SQL SERVER 2008的层次结构支持
    C#打包程序
    SQL SERVER 2008的top增强
    SQL SERVER导出数据字典
    SQL SERVER 2008的转置函数PIVOT
    SQL SERVER 2008的SQLCMD模式
    SQL SERVER 2008传递表值参数
    SQL Server 2005导出表中数据的SQL脚本形式(即INSERT语句)
  • 原文地址:https://www.cnblogs.com/andy0816/p/12293738.html
Copyright © 2011-2022 走看看