Django REST Framework新手遇405 GET方法不允许错误求调试帮助
问题解决方案
错误根因
你触发405 Method Not Allowed的直接原因是:你向CreateRoomView接口发送了GET请求,但该视图类仅显式定义了post方法,DRF的APIView默认仅支持你主动声明的HTTP方法,因此直接拦截了GET请求返回报错。
对应解决办法
分两种场景处理:
- 如果你是要调用创建房间的功能:创建房间本身属于写操作,应该用POST请求发起调用即可。如果是直接在浏览器地址栏输入地址访问,默认发的是GET请求,你可以用接口测试工具(Postman、Apifox等)发POST请求,携带
guest_can_pause、votes_to_skip参数即可正常调用。 - 如果你确实需要该接口支持GET请求获取数据:直接在
CreateRoomView类中补充get方法即可,参考代码如下:
def get(self, request, format=None): # 按需编写GET逻辑,示例为返回所有房间数据 queryset = Room.objects.all() return Response(RoomSerializer(queryset, many=True).data, status=status.HTTP_200_OK)
代码隐藏问题提醒
你当前的CreateRoomView的post方法中,新建房间的分支执行完room.save()后没有返回响应,会触发500错误,需要补充返回逻辑:
else: room = Room(host=host, guest_can_pause=guest_can_pause, votes_to_skip=votes_to_skip) room.save() # 补充下面这行 return Response(RoomSerializer(room).data, status=status.HTTP_201_CREATED)
内容的提问来源于stack exchange,提问作者Tanvesh
相关产品推荐
相关产品推荐

