Python 在drf yasg中设置自定义基本路径

Python 在drf yasg中设置自定义基本路径,python,django,django-rest-framework,drf-yasg,Python,Django,Django Rest Framework,Drf Yasg,我正在使用drf yasg来记录我的API,我有以下设置: from django.urls import path from drf_yasg.views import get_schema_view public_schema_view = get_schema_view(..., urlconf='public_apis.urls') private_schema_view = get_schema_view(..., urlconf='private_apis.urls') urlp

我正在使用drf yasg来记录我的API,我有以下设置:

from django.urls import path
from drf_yasg.views import get_schema_view

public_schema_view = get_schema_view(..., urlconf='public_apis.urls')
private_schema_view = get_schema_view(..., urlconf='private_apis.urls')

urlpatterns = [
    path('public/', public_schema_view.with_ui('swagger', cache_timeout=0), name='schema-public'),
    path('private/', private_schema_view.with_ui('swagger', cache_timeout=0), name='schema-private'),
]
注意:分别从模块
public\u api.url
private\u schema\u视图
中重新排序两组不同的URL

这里我想要两个
basePath
s

  • /api/v1/public/
    用于
    public\u schema\u视图
  • /api/v1/private/
    用于
    private\u schema\u视图

  • 因此,问题是,如何在中设置多个自定义项?

    您可以通过重写schema generator类的方法来设置
    ,并且可以通过使用
    generator\u类
    参数在函数中使用它

    架构生成器类可以通过以下方式继承类来创建:

    from django.urls import path
    from drf_yasg.views import get_schema_view
    from drf_yasg.generators import OpenAPISchemaGenerator
    
    
    class PublicAPISchemeGenerator(OpenAPISchemaGenerator):
        def get_schema(self, request=None, public=False):
            schema = super().get_schema(request, public)
            schema.base_path = '/api/v1/public/'
            return schema
    
    
    class PrivateAPISchemeGenerator(OpenAPISchemaGenerator):
        def get_schema(self, request=None, public=False):
            schema = super().get_schema(request, public)
            schema.base_path = '/api/v1/private/'
            return schema
    
    
    public_schema_view = get_schema_view(...,
                                         urlconf='public_apis.urls',
                                         generator_class=PublicAPISchemeGenerator)
    private_schema_view = get_schema_view(...,
                                          urlconf='private_apis.urls',
                                          generator_class=PrivateAPISchemeGenerator)
    
    urlpatterns = [
        path('public/', public_schema_view.with_ui('swagger', cache_timeout=0), name='schema-public'),
        path('private/', private_schema_view.with_ui('swagger', cache_timeout=0), name='schema-private'),
    ]
    
    从django.url导入路径
    从drf_yasg.views导入get_schema_视图
    从drf_yasg.generators导入OpenAPISchemaGenerator
    类PublicAPIschemaGenerator(OpenAPISchemaGenerator):
    def get_模式(self,request=None,public=False):
    schema=super().get_schema(请求,公共)
    schema.base_path='/api/v1/public/'
    返回模式
    类私有ApiSchemeGenerator(OpenAPISchemaGenerator):
    def get_模式(self,request=None,public=False):
    schema=super().get_schema(请求,公共)
    schema.base_path='/api/v1/private/'
    返回模式
    公共模式视图=获取模式视图(。。。,
    urlconf='public_api.url',
    发电机(类别=PublicAPISchemeGenerator)
    私有模式视图=获取模式视图(。。。,
    urlconf='private_api.url',
    发电机(类别=PrivateAPISchemeGenerator)
    URL模式=[
    路径('public/',public_schema_view.with_ui('swagger',cache_timeout=0),name='schema-public'),
    path('private/',private_schema_view.with_ui('swagger',cache_timeout=0),name='schema-private'),
    ]
    
    您可以通过重写schema generator类的方法来设置
    基本路径
    ,并且可以使用
    generator\u类
    参数在函数中使用它

    架构生成器类可以通过以下方式继承类来创建:

    from django.urls import path
    from drf_yasg.views import get_schema_view
    from drf_yasg.generators import OpenAPISchemaGenerator
    
    
    class PublicAPISchemeGenerator(OpenAPISchemaGenerator):
        def get_schema(self, request=None, public=False):
            schema = super().get_schema(request, public)
            schema.base_path = '/api/v1/public/'
            return schema
    
    
    class PrivateAPISchemeGenerator(OpenAPISchemaGenerator):
        def get_schema(self, request=None, public=False):
            schema = super().get_schema(request, public)
            schema.base_path = '/api/v1/private/'
            return schema
    
    
    public_schema_view = get_schema_view(...,
                                         urlconf='public_apis.urls',
                                         generator_class=PublicAPISchemeGenerator)
    private_schema_view = get_schema_view(...,
                                          urlconf='private_apis.urls',
                                          generator_class=PrivateAPISchemeGenerator)
    
    urlpatterns = [
        path('public/', public_schema_view.with_ui('swagger', cache_timeout=0), name='schema-public'),
        path('private/', private_schema_view.with_ui('swagger', cache_timeout=0), name='schema-private'),
    ]
    
    从django.url导入路径
    从drf_yasg.views导入get_schema_视图
    从drf_yasg.generators导入OpenAPISchemaGenerator
    类PublicAPIschemaGenerator(OpenAPISchemaGenerator):
    def get_模式(self,request=None,public=False):
    schema=super().get_schema(请求,公共)
    schema.base_path='/api/v1/public/'
    返回模式
    类私有ApiSchemeGenerator(OpenAPISchemaGenerator):
    def get_模式(self,request=None,public=False):
    schema=super().get_schema(请求,公共)
    schema.base_path='/api/v1/private/'
    返回模式
    公共模式视图=获取模式视图(。。。,
    urlconf='public_api.url',
    发电机(类别=PublicAPISchemeGenerator)
    私有模式视图=获取模式视图(。。。,
    urlconf='private_api.url',
    发电机(类别=PrivateAPISchemeGenerator)
    URL模式=[
    路径('public/',public_schema_view.with_ui('swagger',cache_timeout=0),name='schema-public'),
    path('private/',private_schema_view.with_ui('swagger',cache_timeout=0),name='schema-private'),
    ]