11from django .core .management .base import BaseCommand
22
3- from rest_framework .renderers import CoreJSONRenderer
4- from rest_framework .schemas import SchemaGenerator
5-
3+ from rest_framework .renderers import CoreJSONRenderer , JSONRenderer
4+ from rest_framework .schemas . generators import OpenAPISchemaGenerator , SchemaGenerator
5+ from rest_framework . settings import api_settings
66
77class Command (BaseCommand ):
88 help = "Generates configured API schema for project."
@@ -26,11 +26,21 @@ def add_arguments(self, parser):
2626 pass
2727
2828 def handle (self , * args , ** options ):
29+ generator_class = self ._get_generator_class ()
30+ generator = generator_class ()
2931
30- renderer = CoreJSONRenderer ()
31- generator = SchemaGenerator ()
3232 schema = generator .get_schema (request = None , public = True )
3333
34+ renderer = self ._get_renderer (generator )
3435 rendered_schema = renderer .render (schema , renderer_context = {}).decode ('utf8' )
3536
3637 self .stdout .write (rendered_schema )
38+
39+ def _get_generator_class (self ):
40+ return api_settings .DEFAULT_SCHEMA_GENERATOR_CLASS
41+
42+ def _get_renderer (self , generator ):
43+ if isinstance (generator , OpenAPISchemaGenerator ):
44+ return JSONRenderer ()
45+ else :
46+ return CoreJSONRenderer ()
0 commit comments