如何解决drf_yasg文档参数未显示
我正在使用drf_yasg自行记录我的使用django-framework构建的API,但是任何端点都没有显示任何参数。我这样做的方法是以JSON格式在http请求主体中传递参数。然后,我从request.data中读取参数。下面是其中一个视图的示例,该视图在请求正文中将“ id”作为参数。
@api_view(['POST'])
@permission_classes([IsAuthenticated])
def get_availability_by_schoolid(request):
if request.user.is_donor:
try:
#Get the existing slots and remove them to replace with new slots
slots = SchoolSlot.objects.filter(school__id=request.data["id"]).values('day','am','pm')
availability = process_availability(slots)
availabilityslotserializer = SchoolSlotSerializer(availability)
return Response(availabilityslotserializer.data,status=status.HTTP_200_OK)
except Exception as e:
print(e)
return Response(ResponseSerializer(GeneralResponse(False,"Unable to locate school")).data,status=status.HTTP_400_BAD_REQUEST)
else:
return Response(ResponseSerializer(GeneralResponse(False,"Not registered as a donor")).data,status=status.HTTP_400_BAD_REQUEST)
这将显示在下面的招摇文档中:
我一直在查看文档,它暗示我可能需要添加带有手动参数的装饰器,但是由于我可以找到用于获取查询参数或路径的示例,因此我不知道该怎么做。参数。我在下面添加了装饰器,该装饰器允许对文档进行响应。
@swagger_auto_schema(method='post',responses={200: SchoolSlotSerializer,400: 'Bad Request'})
请求正文的示例是:
{ "id": 43 }
更新:
使用以下装饰器,我似乎得到了一些东西:
@swagger_auto_schema(method='post',request_body=openapi.Schema(
type=openapi.TYPE_OBJECT,properties={
'id': openapi.Schema(type=openapi.TYPE_INTEGER,description='Donor ID')
}),400: 'Bad Request'})
这记录了参数。现在,我拥有另一个端点,它需要以下JSON作为输入,我将如何添加它?
{
"availability": {
"mon": {
"AM": true,"PM": false
},"tue": {
"AM": false,"wed": {
"AM": false,"thu": {
"AM": true,"PM": true
},"fri": {
"AM": false,"sat": {
"AM": false,"sun": {
"AM": true,"PM": false
}
}
}
解决方法
您可以为此使用ModelSerializer:
@swagger_auto_schema(method='post',request_body=ModelSerializer)
,
我相信这是它能够正常工作的原因:
如果有更好的方法,请告诉我。
@swagger_auto_schema(method='post',request_body=openapi.Schema(
type=openapi.TYPE_OBJECT,properties={
'id': openapi.Schema(type=openapi.TYPE_INTEGER,description='Donor ID')
}),responses={200: SchoolSlotSerializer,400: 'Bad Request'})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。