Я пытаюсь использовать Swagger с DRF, но почему-то не работает должным образом.
Это функция swagger_view, которую я использую:
def get_swagger_my_view(title=None, url=None, patterns=None, urlconf=None):
"""
Returns schema view which renders Swagger/OpenAPI.
"""
from rest_framework.views import APIView
class SwaggerSchemaView(APIView):
# _ignore_model_permissions = True
# permission_classes = [AllowAny]
permission_classes = [IsAuthenticated]
exclude_from_schema = True
renderer_classes = [
CoreJSONRenderer,
renderers.OpenAPIRenderer,
renderers.SwaggerUIRenderer
]
def get(self, request):
generator = SchemaGenerator(
title=title,
url=url,
patterns=patterns,
urlconf=urlconf
)
schema = generator.get_schema(request=request)
if not schema:
raise exceptions.ValidationError(
'The schema generator did not return a schema Document'
)
return Response(schema)
return SwaggerSchemaView.as_view()
И моя идея заключалась в входе в /admin/
(в моем случае dashboard
) и перенаправлении на swagger
Вот мои SWAGGER_SETTINGS
SWAGGER_SETTINGS = {
'SECURITY_DEFINITIONS': {
'api_key': {
'type': 'apiKey',
'in': 'header',
'name': 'Authorization'
}
},
'LOGIN_URL': '/dashboard/login/'
}
И когда я go перехожу на URL Swagger, я вижу вот это:
Что здорово.
Затем, когда я нажимаю Session Login
I go на /dashboard/login
с /dashboard/login/?next=/docs/
, мне это нравится.
Но после входа в систему я возвращаюсь к тому же виду, что и на изображении. И когда я снова нажимаю Session login
, он входит в /admin/
(в моем случае dashboard
), что означает, что он видит, что я аутентифицирован, но почему-то Swagger
не может видеть, что я аутентифицирован.
Может у кого раньше была подобная проблема.
Спасибо!