Django REST框架Swagger - 身份验证错误

Mel*_*nez 5 python django swagger django-rest-framework swagger-ui

我按照文档中的说明进行操作.所以这是我的看法:

from rest_framework.decorators import api_view, renderer_classes
from rest_framework import response, schemas
from rest_framework_swagger.renderers import OpenAPIRenderer, SwaggerUIRenderer


@api_view()
@renderer_classes([OpenAPIRenderer, SwaggerUIRenderer])
def schema_view(request):
    generator = schemas.SchemaGenerator(title='Bookings API')
    return response.Response(generator.get_schema(request=request))
Run Code Online (Sandbox Code Playgroud)

我向我添加了以下内容urls.py:

url(r'^docs/', views.schema_view),
Run Code Online (Sandbox Code Playgroud)

当我进入/docs/项目页面时,出现以下错误:

401 : {"detail": "Authentication credentials were not provided."} http://127.0.0.1:8000/docs/?format=openapi
Run Code Online (Sandbox Code Playgroud)

在浏览器控制台中,我收到了以下消息:

Unable to Load SwaggerUI init.js (line 57)
Run Code Online (Sandbox Code Playgroud)

当我设置permission_classesschema_view的时候AllowAny,我能够查看我的api文档.但是,我不确定这是否是正确的做法.是否有办法以管理员或任何其他用户身份登录以查看文档.另外,在浏览器中查看时如何提供身份验证令牌?也许我在文档中遗漏了一些东西.

Mel*_*nez 12

我想我找到了解决方案.

settings.py,我添加了以下设置:

SWAGGER_SETTINGS = {
    'SECURITY_DEFINITIONS': {
        'api_key': {
            'type': 'apiKey',
            'in': 'header',
            'name': 'Authorization'
        }
    },
}
Run Code Online (Sandbox Code Playgroud)

然后当我加载页面时,我只需单击右上角的" 授权"按钮,然后在文本字段中输入此值:

Token <valid-token-string>
Run Code Online (Sandbox Code Playgroud)

不过,我仍然需要设置权限类的schema viewAllowAny.身份验证令牌让我从不同的用户切换,允许我查看不同的端点集.

  • 在django swagger的2.2.0版本中,是否存在带有“授权”按钮的错误。降级到版本2.1.2,此问题已解决。 (2认同)