DRF 3.6:如何在APIView中记录输入参数(用于自动生成doc)?

Dav*_* D. 13 django django-rest-framework

我正在努力使用DRF 3.6自动生成的交互式文档来提供输入参数以填充交互模式.

结果,我得到一个空窗口用于我的POST请求(实际上需要3个参数):

在此输入图像描述

使用Swagger,我可以使用一些YAML直接在docstring中完成.现在,在浏览DRF文档后,我找不到这样做的方法.

class ActivateCustomerView(APIView):

    permission_classes = (AllowAny,)

    def post(self, request):
        """ View dedicated to activating a pre-recorded customer 
            # Should I add some parameters here?
        """

        serializer = ActivateCustomerSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        # ...
Run Code Online (Sandbox Code Playgroud)

Dav*_* D. 7

我得到汤姆克里斯蒂的答案:

serializer_class本身是不够的 - 视图需要实现get_serializer,请参阅:https://github.com/encode/django-rest-framework/blob/master/rest_framework/schemas.py#L570

所以在我的情况下,添加这个效果很好:

def get_serializer(self):
    return ActivateCustomerSerializer()
Run Code Online (Sandbox Code Playgroud)


Tho*_*ang 0

编辑:我忘记回答有关输入参数的问题。我相信这将基于序列化器。您是否尝试过指定您的serializer_class

使用 DRF 的内置文档生成器,您希望将文档字符串放在类级别并包含请求方法,如下所示:

class ActivateCustomerView(APIView):
    """
    post:
    View dedicated to activating a pre-recorded customer 
    # Should I add some parameters here?

    # if you have a get request
    get:
    # your docs for the get handler
    """

    permission_classes = (AllowAny,)

    def post(self, request):

        serializer = ActivateCustomerSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        # ...
Run Code Online (Sandbox Code Playgroud)