Как я могу сделать JavaScript ajax вызов при загрузке страницы и получить данные из представлений в Django
Я хочу передавать данные localStorage в представления Django и отображать возвращаемую запись в шаблоне страницы при ее загрузке.
Я думаю, что это можно сделать с помощью Ajax, но у меня нет идеи, как я могу передать определенную переменную localStorage в Django views на определенной загрузке страницы и отобразить запись на шаблоне как обычный шаблонизатор (не ajax html return)
Например: Если я загружаю URL abcd.com/test, я хочу передать массив идентификаторов или что-то типа Variable, и вернуть представления в шаблоне в соответствии с переданными значениями.
Есть ли лучший способ достичь этого?
Я пробовал этот способ, но безуспешно: Javascript:
<script>
window.onload = function(){
var compare = localStorage.getItem("comparisionProducts");
var action_url =$this().window.location.href
if (compare.value !== ''){
$.ajax({
url: action_url,
type: "POST",
data: {'compare_id': compare },
headers: { "X-CSRFToken": $.cookie("csrftoken") },
success: function (result) {
console.log("Success")
},
error: function () {
alert("Please login");
}
});
}
};
<script>
и мои взгляды:
def compare(request):
if request.is_ajax() and request.POST and 'compare_id' in request.POST:
data = Products.objects.filter(product_id = int(request.POST['compare_id']))
context={
'product':product,
}
return render (request, './ecommerce/compare.html', context)
поскольку .is_ajax()
устарел, вы не можете его использовать, но вы можете проверить, является ли запрос XMLHttpRequest, как показано ниже.
from django.shortcuts import get_object_or_404
def compare(request):
is_ajax = request.headers.get('X-Requested-With') == 'XMLHttpRequest'
if is_ajax and request.method == "POST":
compare_id = request.POST.get('compare_id')
product = get_object_or_404(Products, product_id=id)
context={ 'product':product,}
return render (request, './ecommerce/compare.html', context)
примечание; get_object_or_404 - это просто сокращение для:
try:
product = Products.objects.get(product_id=id)
except:
raise Http404