我正在尝试创建一个在线类,并希望通过类的列表循环,看看他/她是否已注册
问题是如果列表为空,它将返回一个错误
我使用django
和django-restframework
这是我的代码
@api_view(['POST'])
@permission_classes([IsAuthenticated,])
def createOrderForOnlineClasses(request):
user = request.user
data = request.data
Class = OnlineClass.objects.get(id= data["classId"])
orderCred = {
'pin' : 'somepin',
'amount' : int(Class.totalPrice),
'callback' : 'http://localhost:3000/verify/',
}
for i in user.userprofile.onlineClass.all():
if i == Class:
return Response({"details": "allready registered"}, status=status.HTTP_400_BAD_REQUEST)
else:
try:
response = requests.post("URL_TO_SOMEWHERE", data=orderCred)
if response.status_code == 200 and not response.text.replace('-',"").isdigit():
registeredClass = RegisterStudentForOnlineClass.objects.create(
user=user,
totalPrice = int(Class.totalPrice),
transId = response.text,
onlineClassName= Class
)
serializer = RegisterForClassSerializer(registeredClass , many=False)
return Response(serializer.data)
else:
return Response({"details": ""} , status= status.HTTP_400_BAD_REQUEST)
except Exception as e:
return Response({"details": e})
这里是返回的错误
Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`
谢谢你:)
当您调用for i in user.userprofile.onlineClass.all()
并且它为空时,它将简单地传递循环。您的问题实际上是,对于user.userprofile.onlineClass.all()
为空的场景,您只需要一个默认响应。
在for循环
后面放一个默认的预期响应