Update schema generator example (#4267)

1. The returns from the views needs to be a Response
2. I found that instantiating the generator at the module level caused an import error when starting Django, likely because it is executing before all the app load magic happened. Moving it into the view method solved this.
This commit is contained in:
Marc Gibbons 2016-07-18 11:04:23 -04:00 committed by Tom Christie
parent bea243a0ca
commit d80b0eaead

View File

@ -157,14 +157,14 @@ return the schema.
**views.py:** **views.py:**
from rest_framework.decorators import api_view, renderer_classes from rest_framework.decorators import api_view, renderer_classes
from rest_framework import renderers, schemas from rest_framework import renderers, response, schemas
generator = schemas.SchemaGenerator(title='Bookings API')
@api_view() @api_view()
@renderer_classes([renderers.CoreJSONRenderer]) @renderer_classes([renderers.CoreJSONRenderer])
def schema_view(request): def schema_view(request):
return generator.get_schema() generator = schemas.SchemaGenerator(title='Bookings API')
return response.Response(generator.get_schema())
**urls.py:** **urls.py:**
@ -185,7 +185,8 @@ you need to pass the `request` argument to the `get_schema()` method, like so:
@api_view() @api_view()
@renderer_classes([renderers.CoreJSONRenderer]) @renderer_classes([renderers.CoreJSONRenderer])
def schema_view(request): def schema_view(request):
return generator.get_schema(request=request) generator = schemas.SchemaGenerator(title='Bookings API')
return response.Response(generator.get_schema(request=request))
## Explicit schema definition ## Explicit schema definition
@ -196,7 +197,7 @@ representation.
import coreapi import coreapi
from rest_framework.decorators import api_view, renderer_classes from rest_framework.decorators import api_view, renderer_classes
from rest_framework import renderers from rest_framework import renderers, response
schema = coreapi.Document( schema = coreapi.Document(
title='Bookings API', title='Bookings API',
@ -208,7 +209,7 @@ representation.
@api_view() @api_view()
@renderer_classes([renderers.CoreJSONRenderer]) @renderer_classes([renderers.CoreJSONRenderer])
def schema_view(request): def schema_view(request):
return schema return response.Response(schema)
## Static schema file ## Static schema file
@ -273,7 +274,8 @@ Returns a `coreapi.Document` instance that represents the API schema.
@api_view @api_view
@renderer_classes([renderers.CoreJSONRenderer]) @renderer_classes([renderers.CoreJSONRenderer])
def schema_view(request): def schema_view(request):
return generator.get_schema() generator = schemas.SchemaGenerator(title='Bookings API')
return Response(generator.get_schema())
Arguments: Arguments: