Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django Rest Framework: How to enable swagger docs for function based views

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

like image 391
Abijith Mg Avatar asked Apr 26 '17 07:04

Abijith Mg


People also ask

Is Django rest swagger deprecated?

Django REST Swagger: deprecated (2019-06-04)

What is function based view in Django?

Detail View refers to a view (logic) to display a particular instance of a table from the database with all the necessary details. It is used to display multiple types of data on a single page or view, for example, profile of a user.

What is the difference between APIView and Viewset?

APIView allow us to define functions that match standard HTTP methods like GET, POST, PUT, PATCH, etc. Viewsets allow us to define functions that match to common API object actions like : LIST, CREATE, RETRIEVE, UPDATE, etc.


1 Answers

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/

like image 73
Igonato Avatar answered Sep 25 '22 21:09

Igonato