【发布时间】:2019-05-17 23:30:41
【问题描述】:
我已经安装了 drf-yasg,它运行良好。我遇到的问题是它是一个大应用程序,并且每种类型的前端客户端都有大量的端点,即/admin/v1、/app/v1、...
所以我认为将每种类型的文档分开是个好主意,即
urlpatterns += [
url(r'^/admin/swagger/$', admin_schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
url(r'^/app/swagger/$', app_schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
]
所以看起来 drf-yasg 支持这一点,通过将 patterns 提供给 get_scheme_view:
admin_schema_view = get_schema_view(
openapi.Info(
title="API",
default_version='v1',
description="The set of API endpoints used.",
terms_of_service="https://www.google.com/policies/terms/",
contact=openapi.Contact(email="contact@me"),
license=openapi.License(name="BSD License"),
),
patterns=?????,
validators=['flex', 'ssv'],
public=True,
permission_classes=(permissions.AllowAny,),
)
现在我的猜测是提供一个字符串,与定义urls 时的第一个字符串相同,例如patterns=r'^admin/v1/',,结果为:
File "/usr/local/lib/python3.6/dist- packages/rest_framework/compat.py", line 55, in get_original_route
return urlpattern.regex.pattern
AttributeError: 'str' object has no attribute 'regex'
所以使用drf-yasg docs 的文档:
patterns – 如果给定,将仅枚举这些模式以包含在 API 规范中
这里需要什么类型的对象来处理patterns?我已经尝试在 github 上查看 django-rest-framework 和 Django 源代码,但找不到真正需要的类型,它们都是非常大的项目。
【问题讨论】:
标签: django django-rest-framework swagger