Like John Van Buskirk, answer, here is what I have:
Actual manual document created:
drf_api / business / schema.py
# encoding: utf-8 from __future__ import unicode_literals from __future__ import absolute_import import coreapi schema = coreapi.Document( title='Business Search API', url='/api/v3/business/', content={ 'search': coreapi.Link( url='/', action='get', fields=[ coreapi.Field( name='what', required=True, location='query', description='Search term' ), coreapi.Field( name='where', required=True, location='query', description='Search location' ), ], description='Search business listings' ) } )
Then we copied the get_swagger_view function and configured it:
drf_api / swagger.py
# encoding: utf-8 from __future__ import unicode_literals from __future__ import absolute_import from rest_framework import exceptions from rest_framework.permissions import AllowAny from rest_framework.renderers import CoreJSONRenderer from rest_framework.response import Response from rest_framework.views import APIView from rest_framework_swagger import renderers from django.utils.module_loading import import_string def get_swagger_view(schema_location): """ Returns schema view which renders Swagger/OpenAPI. """ class SwaggerSchemaView(APIView): _ignore_model_permissions = True exclude_from_schema = True permission_classes = [AllowAny] renderer_classes = [ CoreJSONRenderer, renderers.OpenAPIRenderer, renderers.SwaggerUIRenderer ] def get(self, request): schema = None try: schema = import_string(schema_location) except: pass if not schema: raise exceptions.ValidationError( 'The schema generator did not return a schema Document' ) return Response(schema) return SwaggerSchemaView.as_view()
Then connect it to urls.py
from ..swagger import get_swagger_view from . import views schema_view = get_swagger_view(schema_location='drf_api.business.schema.schema') urlpatterns = [ url(r'^swagger/$', schema_view),
James lin
source share