gpt4 book ai didi

django - 使用 drf-yasg,如何提供模式?

转载 作者:行者123 更新时间:2023-12-02 08:15:20 30 4
gpt4 key购买 nike

我已经安装了 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通过向get_scheme_view提供patterns来支持这一点:

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,),
)

现在我的猜测是提供一个字符串,与定义url时的第一个字符串相同,例如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 – if given, only these patterns will be enumerated for inclusion in the API spec

这里到底需要什么类型的对象来处理模式?我尝试在 github 上查看 django-rest-framework 和 Django 源代码,但找不到实际需要的类型,它们都是非常大的项目。

最佳答案

经过一些实验,我发现它期望的模式是一个 url 模式列表,而不仅仅是一个标准的 Python 正则表达式字符串。它应该与 urls.py 中的标准 django urlpatterns 完全相同。

因此,假设您已将管理 API url 模式导入为 admin_urlpatterns,您所需要做的就是在模式选项中指定它

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=admin_urlpatterns,
validators=['flex', 'ssv'],
public=True,
permission_classes=(permissions.AllowAny,),
)

绝对很难找到任何示例,他们可能希望在文档中包含一个生动的示例

关于django - 使用 drf-yasg,如何提供模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53817928/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com