刚学习RESTful,遇到报错(1048, "Column 'b_name' cannot be null")
本帖最后由 thepoy 于 2019-9-16 14:41 编辑PyCharm中的REST工具。
models如下:
class Book(models.Model):
b_name = models.CharField(max_length=32)
b_price = models.FloatField(default=10)
def to_dict(self):
return {'id': self.id, 'b_name': self.b_name, 'b_price': self.b_price}
views如下:
@csrf_exempt
def books(request):
if request.method == 'GET':
data = {
'status': 200
}
return JsonResponse(data)
elif request.method == 'POST':
b_name = request.POST.get('b_name')
b_price = request.POST.get('b_price')
book = Book()
book.b_name = b_name
book.b_price = b_price
book.save()
data = {
'status': 201,
'msg': '添加成功',
'data': book.to_dict()
}
return JsonResponse(data)
用REST测试:
报错:
IntegrityError at /api/books/
(1048, "Column 'b_name' cannot be null")
Request Method: POST
Request URL: http://127.0.0.1:8000/api/books/?b_name=%E8%A5%BF%E6%B8%B8%E8%AE%B0&b_price=9.9
Django Version: 2.2.5
Exception Type: IntegrityError
Exception Value:
(1048, "Column 'b_name' cannot be null")
能力有限,实在看不出来是哪里的问题,请大佬指教一下
===================================
已解决:
pycharm的问题,换postman行了,垃圾pycharm!毁我青春!
b_name 这个键的值不能为空,检查一下 知心 发表于 2019-9-16 12:31
b_name 这个键的值不能为空,检查一下
是不能为空啊,POST本来就是要往b_name里填东西的,我搞不懂的就是为什么没能填进去 Pycharm的问题 ,他会把post的信息打在 url上 。 请使用 postman
或者自己写一个测试API的脚本就可以了 脚本里判断下 b_name = request.POST.get('b_name')
b_price = request.POST.get('b_price')
如果是空 提示一下.
应该是你用来测试POST的软件 并没有提交B_name的值导致的 要么客户端测试的软件换一个或者你在研究研究
要么服务器里判断下 如果b_name和b_price的值是空 如何处理
一个合格的API 必然要对客户传来的值进行验证 TheFeng 发表于 2019-9-16 13:01
Pycharm的问题 ,他会把post的信息打在 url上 。 请使用 postman
或者自己写一个测试API的脚本就可以了
666,确实是此问题,换了postman就解决了
页:
[1]