Skip to content

Instantly share code, notes, and snippets.

@Bernardoow
Created November 10, 2018 19:47
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Bernardoow/6a7bb232461a2cdeaf990d2f60f2593e to your computer and use it in GitHub Desktop.
Save Bernardoow/6a7bb232461a2cdeaf990d2f60f2593e to your computer and use it in GitHub Desktop.
Django Rest Swagger
def get_custom_swagger_view(title=None, url=None, patterns=None, urlconf=None):
"""
Returns schema view which renders Swagger/OpenAPI.
"""
class SwaggerSchemaView(APIView):
_ignore_model_permissions = True
exclude_from_schema = True
permission_classes = []
renderer_classes = [
CoreJSONRenderer,
renderers.OpenAPIRenderer,
renderers.SwaggerUIRenderer
]
def dispatch(self, request, *args, **kwargs):
token = settings.SWAGGER_SETTINGS.get("CUSTOM_HEADERS", {}).get("HTTP_AUTHORIZATION", None)
if token:
request.META['HTTP_AUTHORIZATION'] = token
return super(SwaggerSchemaView, self).dispatch(request, *args, **kwargs)
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()
SWAGGER_SETTINGS = {
'SECURITY_DEFINITIONS': {
'api_key': {
'type': 'apiKey',
'in': 'header',
'name': 'Authorization'
}
},
'CUSTOM_HEADERS': {
'HTTP_AUTHORIZATION': 'Token a476957f3c20a3a262a760fc2194569315ea5670'
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment