【问题标题】:Django REST Swagger hiding ModelViewSet with permission_classes=[IsAuthenticated]Django REST Swagger 使用 permission_classes=[IsAuthenticated] 隐藏 ModelViewSet
【发布时间】:2019-03-15 05:56:31
【问题描述】:

我在我的 Django 项目中使用了Django REST Swagger。它能够显示所有带有视图的 URL permission_classes = [IsAuthenticated]。而带有permission_classes = [IsAuthenticated] 的视图未显示在 list-api 中。

这是一个例子:

class EquipmentCategoryViewSet(ResponseMixin, viewsets.ModelViewSet):
    queryset = EquipmentCategory.objects.all()
    serializer_class = EquipmentCategorySerializer
    permission_classes = [IsAuthenticated]

如果我删除 permission_classes = [IsAuthenticated],它会显示在 swagger list-api 中。 我将 swagger 降级为 2.1.2 并单击授权并传递令牌。

奇怪的是我的值中有一个前缀'Token'。当我使用Token<tokenvalue> 登录时,登录失败。但是当我通过<tokenvalue> 时,它会通过身份验证,但没有显示带有 isAuthenticated 的视图。

请建议应该怎么做才能显示添加了 isAuthenticated 的视图。

【问题讨论】:

    标签: django django-rest-framework swagger django-rest-swagger


    【解决方案1】:

    在文档 API 右上角有一个授权或登录选项。请务必在其中提供有效令牌或登录。这将列出其他端点。

    使用 swagger 2.1.2。

    最新的 django swagger 版本 2.2 有一些问题 授权。参考: https://github.com/marcgibbons/django-rest-swagger/issues/762

    【讨论】:

    • 感谢您的快速回复。我使用了 Django rest_auth,它使用令牌身份验证。我该如何处理?
    • 您使用的是哪个 swagger 版本?
    • 版本:2.2.0
    • 降级到 2.1.2。否则可能会导致一些问题。
    • 降级到 2.1.2。用户已获得授权,但未显示所有 URL。
    【解决方案2】:

    你可以覆盖架构

    from rest_framework.schemas import get_schema_view
    
    from rest_framework_swagger import renderers
    
    
    schema_view = get_schema_view(title="Fbs Api Docs", public=True, renderer_classes=[renderers.OpenAPIRenderer, renderers.SwaggerUIRenderer])
    

    你传递 public=True 它将允许所有 api 列出,在 urls.py 包含在下面

    path('docs/', schema_view),
    

    【讨论】:

      猜你喜欢
      • 2019-02-24
      • 2015-10-06
      • 2021-11-07
      • 2016-06-28
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      相关资源
      最近更新 更多