我已经构建了一个Django API,当通过POST给出一个电子邮件地址时,它将使用一个布尔值来响应,该值指示是否存在我的数据库中已经存在的电子邮件地址:
class isEmailTaken(views.APIView):
permission_classes = [permissions.AllowAny,]
def post(self, request, *args, **kwargs):
try:
email = request.DATA['email']
except KeyError:
return HttpResponse(
'An email was not given with this request.',
status=status.HTTP_400_BAD_REQUEST,
)
return HttpResponse(
json.dumps(
User.objects.filter(email=email),
content_type="application/json",
status=status.HTTP_200_OK,
)
)现在,我想使用django-休息-昂首阔步包为这个API自动生成文档。我安装了包,并将上面看到的注释插入到三元引号之间。当我查看django-rest-swagger为这个API生成的文档时,我看到了下面的图像。

但是,当我单击Try it out!按钮时,会得到如下所示的错误。值得注意的是,它从来没有给我一个机会,输入电子邮件的论点,它应该通过邮寄。

为什么Django-Swagger包不创建允许我通过POST正确地讨论“电子邮件”的文档?我该怎么做呢?
发布于 2014-09-12 07:42:12
我用django rest-swagger创建的cigar_example测试了这一点,在那个例子中,他们编写了一个自定义视图,它也没有呈现输入参数。
最后,我查看了源代码,发现django-rest-swagger需要get_serializer_class来构建身体参数。
因此,它与以下代码一起工作:
class isEmailTaken(views.APIView):
permission_classes = [permissions.AllowAny,]
serializer_class = IsEmailTakenSerializer
def get_serializer_class(self):
return self.serializer_class
def post(self, request, *args, **kwargs):
try:
email = request.DATA['email']
except KeyError:
return HttpResponse(
'An email was not given with this request.',
status=status.HTTP_400_BAD_REQUEST,
)
return HttpResponse(
json.dumps(
User.objects.filter(email=email),
content_type="application/json",
status=status.HTTP_200_OK,
)
)和IsEmailTakenSerializer
from rest_framework import serializers
class IsEmailTakenSerializer(serializers.Serializer):
email = serializers.EmailField()发布于 2014-09-10 09:27:42
django-rest-swagger试图在没有数据的情况下发送一个POST请求。
首先,你必须像这样修正你的观点:
from rest_framework import status
from django.http import HttpResponse
import json
def post(self, request, *args, **kwargs):
try:
email = request.DATA['email']
except KeyError:
return HttpResponse(
'An email was not given with this request.',
status=status.HTTP_400_BAD_REQUEST,
)
return HttpResponse(
json.dumps(
User.objects.filter(email=email),
content_type="application/json",
status=status.HTTP_200_OK,
)
)如果您尝试这样做,您现在应该会看到您的好错误消息。
下一步是查看django-rest-swagger文档,找出它在“试试看”按钮上方呈现html表单字段的方法。
https://stackoverflow.com/questions/25752983
复制相似问题