Python Django:如何在Ajax上用上下文呈现特定的HTML
在我的项目中,在通过PayPal付款后,我尝试根据以下视图将其重定向到具有特定上下文的HTML页面:Python Django:如何在Ajax上用上下文呈现特定的HTML,python,django,Python,Django,在我的项目中,在通过PayPal付款后,我尝试根据以下视图将其重定向到具有特定上下文的HTML页面: def payment_complete(request): body = json.loads(request.body) order = Order.objects.get( user=request.user, ordered=False, id=body['orderID']) payment = Payment( user=req
def payment_complete(request):
body = json.loads(request.body)
order = Order.objects.get(
user=request.user, ordered=False, id=body['orderID'])
payment = Payment(
user=request.user,
stripe_charge_id=body['payID'],
amount=order.grand_total()
)
payment.save()
order.payment = payment
order.ordered = True
order.ref_code = create_ref_code()
order.save()
messages.success(request, "Your Order was Successful ! ")
return render(request, "order_completed.html", {'order': order}) <------------------------
还有,我试过了,但没用
window.location.href = 'core:payment-complete';
这里是完整的贝宝上批准脚本
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
console.log(details);
sendData();
function sendData() {
fetch(url, {
method: "POST",
headers: {
"Content-type": "application/json",
"X-CSRFToken": csrftoken,
},
body: JSON.stringify({ orderID: orderID, payID: details.id }),
});
}
// Show a success message to the buyer
alert('Transaction completed by ' + details.payer.name.given_name + '!');
// similar behavior as an HTTP redirect
window.location.replace("/");
window.location.href = 'payment-complete';
});
}
}).render('#paypal-button-container');
</script>
审批:功能(数据、操作){
返回actions.order.capture().then(函数(详细信息){
控制台日志(详细信息);
sendData();
函数sendData(){
获取(url{
方法:“张贴”,
标题:{
“内容类型”:“应用程序/json”,
“X-CSRFToken”:CSRFToken,
},
body:JSON.stringify({orderID:orderID,payID:details.id}),
});
}
//向买家显示成功消息
警报(“+details.payer.name.given_name+”!”完成的交易);
//类似于HTTP重定向的行为
窗口。位置。替换(“/”);
window.location.href='付款完成';
});
}
}).render(“#贝宝按钮容器”);
首先,您确定这是一种在db中创建付款而不需要服务器端确认的好方法吗?您的意思是有更好的方法吗?
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
console.log(details);
sendData();
function sendData() {
fetch(url, {
method: "POST",
headers: {
"Content-type": "application/json",
"X-CSRFToken": csrftoken,
},
body: JSON.stringify({ orderID: orderID, payID: details.id }),
});
}
// Show a success message to the buyer
alert('Transaction completed by ' + details.payer.name.given_name + '!');
// similar behavior as an HTTP redirect
window.location.replace("/");
window.location.href = 'payment-complete';
});
}
}).render('#paypal-button-container');
</script>