Django Rest Framework: как включить документы swagger для представлений на основе функций
Я прошел Django REST Swagger 2.1.2 документация. Когда я попытался с представлениями на основе класса, он работал нормально.
но я не нашел никакой ссылки на то, как включить swagger для представлений на основе функций, как показано ниже:
@api_view(['GET', 'POST'])
def app_info(request):
...
return response
большинство моих views.py
заполняется представлениями на основе функций, как и выше.
любая помощь о том, как добиться этого будет принята с благодарностью. Спасибо!
Я использую Джанго: 1.8; Django REST Swagger: 2.1.2; DRF: 3.6.2
2 ответов
вы должны иметь возможность использовать @renderer_classes
декоратор:
from rest_framework_swagger import renderers
from rest_framework.decorators import api_view, renderer_classes
@api_view(['GET', 'POST'])
@renderer_classes([renderers.OpenAPIRenderer, renderers.SwaggerUIRenderer])
def app_info(request):
...
return response
кроме того, стоит отметить, что если вы не хотите использовать этот декоратор на каждом представлении, вы можете указать DEFAULT_RENDERER_CLASSES
в настройках
EDIT: кажется, это все-таки в документах. Проверить самом низу этой страницы: https://django-rest-swagger.readthedocs.io/en/latest/schema/
Я не знаком с суэггером, но вы можете попробовать использовать декоратора таким образом:
class TestView(View):
@api_view(['GET', 'POST'])
def get(self, request):
....
или
from django.utils.decorators import method_decorator
class TestView(View):
@method_decorator(api_view(['GET', 'POST'])
def get(self, request):
....
----------------------------------------------------------------------------
Извините, возможно я неправильно понял ваш вопрос. согласно документу, если вы хотите включить swagger в представлении на основе класса. есть пример:
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
from rest_framework.schemas import SchemaGenerator
from rest_framework.views import APIView
from rest_framework_swagger import renderers
class SwaggerSchemaView(APIView):
permission_classes = [AllowAny]
renderer_classes = [
renderers.OpenAPIRenderer,
renderers.SwaggerUIRenderer
]
def get(self, request):
generator = SchemaGenerator()
schema = generator.get_schema(request=request)
return Response(schema)
restframework будет использовать эти два класса renderer_classes для рендеринга Json и UI.