如何记录基于函数的视图参数?

时间:2017-11-12 22:03:29

标签: django python-3.x django-rest-framework swagger django-swagger

我正在使用Django 1.11和Django REST Framework 3.7开发REST API。我安装了Django REST Swagger 2.1来生成文档。

我正在使用基于函数的视图:

from rest_framework.decorators import api_view, permission_classes

@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
def jwt_auth(request, provider, format=None):
    """
    View description here
    """
    pass

Generated documentation by Swagger

正如您所看到的,我的观点得到了Swagger的认可,它有正确的描述:“在此处查看说明”。

然而:

  • 您可以看到provider网址参数的“说明”列为空。
  • 没有记录POST参数(显然,因为Swagger无法知道它们)

如何编写基于函数的视图的URL和POST参数以及响应的文档?

我尝试了YAML Docstrings,但它似乎是针对旧版本(0.3.x)而且它不适用于版本2.x.

4 个答案:

答案 0 :(得分:1)

您可以使用DjangoRestFrameWork的Schema。 http://www.django-rest-framework.org/api-guide/schemas/

在您的情况下,您可以尝试以下操作。

from rest_framework.decorators import api_view, permission_classes, schema
@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
@schema(custom_schema)
def jwt_auth(request, provider, format=None):
    """
    View description here
    """
    pass

自定义架构定义

import coreapi, coreschema
from rest_framework.schemas import AutoSchema, ManualSchema
custom_schema = AutoSchema(manual_fields=[
    coreapi.Field("username", required=True, location="form", type="string", description="username here"),
    coreapi.Field("password", required=True, location="form", type="string", description="password field"
]

应该做的伎俩。 有关更多详细信息,请访问我在顶部提供的链接。基本的POST和GET参数应该以这种方式工作。

答案 1 :(得分:0)

遵循此github issue,您所说的基于方法的视图似乎无法实现。

但我认为this link可以帮到你。

答案 2 :(得分:0)

使用以下代码

@swagger_auto_schema(method='post', auto_schema=None)
@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
def jwt_auth(request, provider, format=None):
    """
    View description here
    """
    pass

答案 3 :(得分:0)

我已经解释了这个问题的答案。请点击此 StackOverflow 链接:https://stackoverflow.com/a/67688437/8484740