Django Rest Framework:如何为基于函数的视图启用 swagger 文档

问题描述

I went through Django REST Swagger 2.1.2 documentation. When I tried with class based views, it was working fine.

But i did not find any reference on how to enable swagger for function based views as shown below:

@api_view(['GET', 'POST'])
def app_info(request): 
    ...
    return response

Most of my views.py is filled with function based views, just like above.

Any help on how to enable the same will greatly appreciated. Thanks!

I am using Django: 1.8; Django REST Swagger: 2.1.2; DRF: 3.6.2

解决方案

You should be able to use @renderer_classes decorator:

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

Also, it should be worth mentioning, that if you don't want to use this decorator on every view you can specify DEFAULT_RENDERER_CLASSES in settings

EDIT: It seems it's in the docs after all. Check the very bottom of this page: https://django-rest-swagger.readthedocs.io/en/latest/schema/

相关文章