我已經在 localStorage(Itemnames 和 ItemIds)上存盤了一些資料,現在我想從 ajax 將 itemid 發送到 django 視圖。我有 django 和學習 Javascript 的基礎知識。我試圖自己弄清楚,但已經超過 4 天我無法成功,任何幫助將不勝感激。
我的Javascript:
$(document).ready(function() {
var compare = localStorage.getItem("comparisionItems");
var compareObj = JSON.parse(compare);
var data_url = window.location.href;
console.log(compare)
console.log(compareObj)
$.ajax({
url: './compare',
type: "POST",
data: {'compare_id': compareObj },
headers: { "X-CSRFToken": $.cookie("csrftoken") },
dataType: "json",
success: function (data) {
console.log(data)
},
error: function () {
alert("Some problem on passing data");
}
});
});

我的看法:
def compare(request):
is_ajax = request.headers.get('X-Requested-With') == 'XMLHttpRequest'
if is_ajax and request.method == "POST":
compare_id= request.POST.getlist('compare_id[itemIds]')
"""compare_id=request.POST.getlist('itemIds[]') """
"""compare_id = request.POST.get('compare_id')"""
product = get_object_or_404(Products, id=compare_id)
context={ 'product':product}
""" return render (request, './ecommerce/compare.html', context)"""
return render (request, './compare.html', context)
else:
context = None
return render(request,'./compare.html', context)
我怎樣才能通過ajax獲得id通過的產品?是否有任何不同的方法可以將這些產品傳遞給模板,或者我可以像常規的 Django 背景關系程序一樣做到這一點?
uj5u.com熱心網友回復:
從您的 ajax 請求中傳遞 json 字串。
$.ajax({
url: './compare',
type: "POST",
data: JSON.stringify({'compare_id': compareObj }),
headers: { "X-CSRFToken": $.cookie("csrftoken") },
dataType: "json",
contentType : "application/json",
success: function (data) {
console.log(data)
},
error: function () {
alert("Some problem on passing data");
}
});
在你的 views.py
先獲取 POST 資料
import json
data = json.loads(request.body)
compare_ids = data['compare_id'] if 'compare_id' in data else []
# since multiple ids may come you need to use `filter`
products = Products.objects.filter(id__in=compare_ids)
uj5u.com熱心網友回復:
在您的 ajax 中,您應該像這樣對資料部分進行字串化:
$.ajax({
// rest of the code
data: JSON.stringify({'compare_id': compareObj}),
headers: { "X-CSRFToken": $.cookie("csrftoken") },
dataType: "json",
contentType: "application/json",
// rest of the code
});
然后在你看來:
import json
def compare(request):
is_ajax = request.headers.get('X-Requested-With') == 'XMLHttpRequest'
if is_ajax and request.method == "POST":
compare_id = json.loads(request.POST.get('compare_id'))
ids = compare_id.get('compare_id')
# ids will be list of ids and you can get first id with index
product = get_object_or_404(Products, id=ids[0])
# rest of code
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/412660.html
標籤:
上一篇:DjangoManyToMany模型:無法從另一個關系訪問一個關系
下一篇:Django更改密碼
