Когда мой пользователь входит в систему, я хочу проверить localStorage
(используя AJAX), чтобы увидеть, оставил ли пользователь какие-либо товары в своей корзине. Если да, я хочу отобразить (или перенаправить) его на prebasket.html
, что я обычно делаю через return render(request, "pizza/prebasket.html", context)
, как указано ниже в views.py
:
@login_required
def prebasket(request):
q_preselection = request.POST.dict()
preselection = json.loads(q_preselection["preselection"])
items = []
# iterate thru menu items (ids) in user's selection
for id in preselection:
dish = Dish.objects.get(pk=id)
item = {
"id": dish.id,
"name": dish.name,
"size": dish.size,
"price": ("%.2f" % float(dish.price)),
"amount": preselection[id],
"total": ("%.2f" % (int(preselection[id]) * float(dish.price)))
}
items.append(item)
context = {"items": items}
print(f"Context is: ", context) # comes out correctly on terminal
return render(request, "pizza/prebasket.html", context)
Однако prebasket.html
не отображается , И я прочитал, что AJAX не работает так, поэтому я попытался window.location.href
в моем JavaScript / AJAX (пока не использую jQuery - извините, я новичок во всем этом ...). Но это тоже не работает - или, по крайней мере, я не могу передать требуемые параметры для контекста, необходимого в URL:
var preselection = localStorage.getItem("preselection");
function previous_selection () {
if (localStorage.getItem("preselection") != null) {
const data = new FormData();
data.append("preselection", preselection);
const request = new XMLHttpRequest();
request.open('POST', '/');
request.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
request.send(data);
request.onload = () => {
// Below doesn't work AND how to pass on preselection "context"?
var url = '/prebasket';
window.location.href = url;
};
return false;
}
}
Я новичок и действительно застрял здесь на некоторое время - любая помощь оценили!