11from django .core .management .base import BaseCommand
22
3- from rest_framework .renderers import CoreJSONRenderer
4- from rest_framework .schemas import SchemaGenerator
3+ from rest_framework .renderers import CoreJSONRenderer , JSONRenderer
4+ from rest_framework .schemas .generators import OpenAPISchemaGenerator
5+ from rest_framework .settings import api_settings
56
67
78class Command (BaseCommand ):
@@ -26,11 +27,21 @@ def add_arguments(self, parser):
2627 pass
2728
2829 def handle (self , * args , ** options ):
30+ generator_class = self ._get_generator_class ()
31+ generator = generator_class ()
2932
30- renderer = CoreJSONRenderer ()
31- generator = SchemaGenerator ()
3233 schema = generator .get_schema (request = None , public = True )
3334
35+ renderer = self ._get_renderer (generator )
3436 rendered_schema = renderer .render (schema , renderer_context = {}).decode ('utf8' )
3537
3638 self .stdout .write (rendered_schema )
39+
40+ def _get_generator_class (self ):
41+ return api_settings .DEFAULT_SCHEMA_GENERATOR_CLASS
42+
43+ def _get_renderer (self , generator ):
44+ if isinstance (generator , OpenAPISchemaGenerator ):
45+ return JSONRenderer ()
46+ else :
47+ return CoreJSONRenderer ()
0 commit comments