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)
我得到汤姆克里斯蒂的答案:
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)
编辑:我忘记回答有关输入参数的问题。我相信这将基于序列化器。您是否尝试过指定您的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)