Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Rest框架:如何为基于函数的视图启用swagger文档_Python_Django_Django Rest Framework_Swagger_Django Swagger - Fatal编程技术网

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

Python Django Rest框架:如何为基于函数的视图启用swagger文档,python,django,django-rest-framework,swagger,django-swagger,Python,Django,Django Rest Framework,Swagger,Django Swagger,我通过了。当我尝试使用基于类的视图时,效果很好 但我没有找到任何关于如何为基于函数的视图启用swagger的参考,如下所示: @api_view(['GET', 'POST']) def app_info(request): ... return response 我的大多数视图.py都充满了基于函数的视图,如上所述 如果您能提供帮助,我们将不胜感激。谢谢 我使用的是Django:1.8;Django休息大摇大摆:2.1.2;DRF:3.6.2我不习惯招摇过市,但您可以尝试以

我通过了。当我尝试使用基于类的视图时,效果很好

但我没有找到任何关于如何为基于函数的视图启用swagger的参考,如下所示:

@api_view(['GET', 'POST'])
def app_info(request): 
    ...
    return response
我的大多数
视图.py
都充满了基于函数的视图,如上所述

如果您能提供帮助,我们将不胜感激。谢谢


我使用的是Django:1.8;Django休息大摇大摆:2.1.2;DRF:3.6.2

我不习惯招摇过市,但您可以尝试以下方式使用装饰器:

class TestView(View):
    @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将使用这两个渲染器类来渲染Json和UI。

您应该能够使用decorator:

从rest\u framework\u swagger导入渲染器
从rest_framework.decorators导入api_视图、渲染器_类
@api_视图(['GET','POST']))
@渲染器\类([renderers.openapirederer,renderers.SwaggerUIRenderer])
def应用程序信息(请求):
...
返回响应
另外,值得一提的是,如果您不想在您可以指定的每个视图上使用此装饰器

编辑:看来它毕竟在文档中。检查此页面的最底部:

在views.py中添加以下内容 进口 这就是你写招摇文档的目的。 示例json输入
谢谢我会试试看。很可能它不会工作,让我们看看。根据你的编辑:这我已经知道了。我的问题是如何为基于函数的视图启用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)
from rest_framework.schemas import AutoSchema
from rest_framework.compat import coreapi
#creating custom class 
class CustomSampleSchema(AutoSchema):
    def __init__(self):
        super(CustomSampleSchema, self).__init__()

    def get_manual_fields(self, path, method):
        extra_fields = [
            coreapi.Field('field1', required=True, location='form', description='', type='', example=''),
            coreapi.Field('field2', required=False, location='form', description='', type='', example=''),
            coreapi.Field('field3', required=False, location='form', description='', type='', example='')

        ]
        manual_fields = super().get_manual_fields(path, method)
        return manual_fields + extra_fields
@api_view(['post'])
@schema(CustomSampleSchema())
@csrf_exempt
def func_name(request, param):
"""
Your function definition below
"""
{"name": "['name1', ]",
"places": "['place1', 'place2']",
"key":"12345"}