AssertionError: Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`
AssertionError: Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`
我有以下以用户为成员的房间对象。
class Room(Base):
name = models.CharField(db_index=True, unique=True, max_length=255)
members = models.ManyToManyField(User, blank=True)
我正在尝试查找只有两个特定成员的房间,
if Room.objects.filter(members__id=first.id).filter(members__id=second.id).exists():
rooms = Room.objects.filter(members__id=first.id).filter(members__id=second.id)
for room in rooms:
print(room.members.count)
if room.members.count == 2:
return Response({"Success": RoomSerializer(room).data}, status=status.HTTP_200_OK)
我知道存在一个只有两个成员的 Room 对象。但我最终得到了这个错误,
AssertionError: Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`
感谢任何帮助。
如异常所述,在视图结束时,总是 return 响应。在你当前的代码中,如果逻辑不匹配,那么它 returns None.So,像这样更新代码:
if Room.objects.filter(members__id=first.id).filter(members__id=second.id).exists():
rooms = Room.objects.filter(members__id=first.id).filter(members__id=second.id)
for room in rooms:
print(room.members.count)
if room.members.count == 2:
return Response({"Success": RoomSerializer(room).data}, status=status.HTTP_200_OK)
return Response({"Failed": True}, status=status.HTTP_400_BAD_REQUEST) # <-- Return a bad request maybe at the end if all logic fails
QuerySet count() 是一种方法 (type(room.members.count)
returns <class 'method'>
),应该这样调用。只是改变
room.members.count
到
room.members.count()
它应该按预期工作。
我有以下以用户为成员的房间对象。
class Room(Base):
name = models.CharField(db_index=True, unique=True, max_length=255)
members = models.ManyToManyField(User, blank=True)
我正在尝试查找只有两个特定成员的房间,
if Room.objects.filter(members__id=first.id).filter(members__id=second.id).exists():
rooms = Room.objects.filter(members__id=first.id).filter(members__id=second.id)
for room in rooms:
print(room.members.count)
if room.members.count == 2:
return Response({"Success": RoomSerializer(room).data}, status=status.HTTP_200_OK)
我知道存在一个只有两个成员的 Room 对象。但我最终得到了这个错误,
AssertionError: Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`
感谢任何帮助。
如异常所述,在视图结束时,总是 return 响应。在你当前的代码中,如果逻辑不匹配,那么它 returns None.So,像这样更新代码:
if Room.objects.filter(members__id=first.id).filter(members__id=second.id).exists():
rooms = Room.objects.filter(members__id=first.id).filter(members__id=second.id)
for room in rooms:
print(room.members.count)
if room.members.count == 2:
return Response({"Success": RoomSerializer(room).data}, status=status.HTTP_200_OK)
return Response({"Failed": True}, status=status.HTTP_400_BAD_REQUEST) # <-- Return a bad request maybe at the end if all logic fails
QuerySet count() 是一种方法 (type(room.members.count)
returns <class 'method'>
),应该这样调用。只是改变
room.members.count
到
room.members.count()
它应该按预期工作。