一、问题描述
在学习Django框架时,使用postman工具模拟客户端的各种请求,今天在使用类视图时遇到了一些问题:使用GET方式进行请求时,服务器处理ok,返回200状态码,但是换成POST请求时,服务器总是返回500状态码,其结果如下:
使用GET方式进行请求:
检查了下代码,没有发现什么问题,类视图代码如下:
[图片上传失败...(image-47158c-1599899133194)]
url配置也没有问题
[图片上传失败...(image-ef9c94-1599899133194)]
网上找了一下相关问题,发现很多都是提交的JSON数据格式有误等导致,但是我试着不提交任何数据还是会出现同样的问题,于是把postman各个位置的按钮都尝试着点了下,终于发现了问题所在。
二、分析原因
点击Body下面的Preview,发现其提示“RuntimeError at /center”,后面有一段解释,大致意思是django中设置了一个选项APPEND_SLASH=True,当前POST请求url中必须末尾有个'/',我又去项目的settings文件中去找了下,并没有发现这个设置,可能是django默认设置的。
三、解决办法
发现是因为url末尾缺少了'/'后,再url末尾加上'/'再试一下发现果然成功啦。
不过比较奇怪的是以GET方式进行请求时末尾不加/是可以请求成功的,不知道是不是因为django默认设置的问题。