python - JSONDecodeError Django Javascript JSON
问题描述
我在 /charge 时收到 JSON 解码错误data = json.loads(request.body)
。我正在使用 stripe api 以及 fetch api。
完整的错误是这样的:
Traceback (most recent call last):
File "/home/antariksh/Desktop/Python Files/Owlet/env/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/antariksh/Desktop/Python Files/Owlet/env/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/antariksh/Desktop/Python Files/Owlet/env/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/antariksh/Desktop/Python Files/Owlet/env/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/home/antariksh/Desktop/Python Files/Owlet/Menu/views.py", line 151, in charge
data = json.loads(request.body)
File "/usr/lib/python3.7/json/__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.7/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.7/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
这就是错误。我的 /charge/ 视图代码是这样的:
@csrf_exempt
def charge(request):
if request.method == 'POST':
print(request.POST)
transaction_id = uuid.uuid4().hex
data = json.loads(request.body)
print(data)
if request.user.is_authenticated:
customer = request.user.customer
order, created = Order.objects.get_or_create(customer=customer, isComplete=False, status='Created')
else:
order, customer = guestOrder(request, data)
total = data['form']['total']
order.transaction_id = transaction_id
order.isComplete = True
order.status = 'Accepted'
order.save()
ShippingAddress.objects.create(
customer = customer,
order = order,
address = data['shipping']['address'],
city = data['shipping']['city'],
state = data['shipping']['state'],
zipcode = data['shipping']['zipcode'],
)
mailOrder(data['form']['email'], order)
return redirect(reverse('menupage'))
JSON 很好,因为我检查了所有已解析的内容以及运行代码时的内容。它将数据保存在数据库中,但仍显示错误页面。javascript是这样的:
var url = '/charge/'
fetch(url, {
method:'POST',
headers:{
'Content-Type':'application/json',
'X-CSRFToken': csrftoken
},
body:JSON.stringify({'form':userData, 'shipping':shippingData}),
})
.then((response) => {
response.json()
})
.then((data) => {
console.log(data)
swal({
icon: "success",
text: "Transaction Completed"
});
cart = {}
document.cookie = 'cart=' + JSON.stringify(cart) + ";domain=;path=/"
});
上面的 javascript 在语法方面很好。如果 JSON 中有问题或任何问题,请提供帮助。非常感谢您的帮助。请看看并告诉我出了什么问题。任何建议也非常感谢。我没有分享条带 API 代码。
解决方案
推荐阅读
- java - IntellijIDEA 不显示注释描述
- javascript - 当我扩展 Array 类时,filter() 是错误的
- postgresql - 无法使用 Dropbox 作为 url 在 Heroku 中导入本地 pg_dump
- amazon-web-services - Ansible + AWS EC2 插件 + 用户名 + 动态清单文件上的 ssh 密钥
- wpf - 是否可以使用鼠标滚轮滚动 ScrollViewer 的内容?
- python - Scipy.integrate solve_ivp 的稳定性问题
- c# - ASP.NET Core 中的证书绑定
- bitwise-operators - 检查 0,1 和 1,0 模式是否存在 2 个位集
- javascript - python 等效于 DataView(originalSize.buffer).getUint32(0, true);?
- c++ - 在另一个线程中运行 tcp 服务器