Django REST Swagger隐藏具有Permission_classes = [IsAuthenticated]的ModelViewSet

时间:2018-10-10 10:34:11

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

我在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],它将显示在招摇清单API中。 我将swagger降级为2.1.2,然后单击授权并通过了令牌。

奇怪的是,我的值中带有前缀“ 令牌”。当我使用Token<tokenvalue>登录时,登录失败。但是,当我通过<tokenvalue>时,它得到了身份验证,但是未显示带有 isAuthenticated 的视图。

请建议在添加 isAuthenticated 的情况下显示视图的方法。

2 个答案:

答案 0 :(得分:1)

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

使用大招2.1.2。

  

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

答案 1 :(得分:1)

您可以覆盖模式

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