首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用drf-yasg,如何提供模式?

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

Stack Overflow用户
提问于 2018-12-17 15:08:04
回答 1查看 3K关注 0票数 8

我安装了drf-yasg,它工作得很好。我遇到的问题是,它是一个很大的应用程序,对于每种类型的前端客户端都有大量的端点,即/admin/v1/app/v1、.

所以我想把每种类型的文档分开是个好主意,比如

代码语言:javascript
复制
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来支持这一点。

代码语言:javascript
复制
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/',,结果如下:

代码语言:javascript
复制
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文档的文档中

模式-如果给定的话,只有这些模式将被枚举,以便包含在API规范中。

这里到底需要什么类型的对象才能处理patterns?我尝试过查看github上的Django -rest框架和Django源代码,但是找不到实际需要的类型,它们都是非常大的项目。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-17 20:51:25

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

因此,假设您已将admin url模式导入为admin_urlpatterns,则只需在patterns选项中指定它即可。

代码语言:javascript
复制
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,),
)

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53817928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档