Я создаю проект сравнения телефонов.В этом случае, когда пользователь нажимает кнопку сравнения, появляется боковая навигация, и он будет добавлять товары динамически, нажимая кнопку добавления, когда пользователь завершит добавление товаров.затем пользователь нажимает на другую кнопку сравнения для сравнения продуктов, и все названия продуктов идут в виде массива с представлениями из шаблона.
теперь в представлениях функция сравнения будет очищать данные наНа основе значения массива создайте словарь и отобразите словарь в demo.html.
, но проблема в том, что когда я использую XMLHttpRequest, массив отправляется в представления и функция сравнения очищает данныено я не могу использовать здесь функцию рендеринга. Вместо этого я возвращаю JSONresponse.
, но я не знаю, как отобразить данные jsonresponse в шаблоне.
, пожалуйста, помогите мнереши это.заранее спасибо
функция, которая отправляет массив для просмотра:
function ComAction() {
let xhr = new XMLHttpRequest(),
data = new FormData();
data.append('csrfmiddlewaretoken', getCookie('csrftoken'));
brands.forEach(function (brand) {
data.append('brand', brand);
});
xhr.open('POST', 'compare_in/', true);
xhr.onload = function () {
if (xhr.status === 200) {
data = JSON.parse(xhr.responseText);
console.log(data);
alert('Data received successfully. Brands are ' + data.brands);
//var demo = xhr.base64.encode(JSON.stringify(data));
//console.log('http://127.0.0.1:8000/demo/'+demo);
window.location.replace(data.redirect_url);
} else if (xhr.status !== 200) {
alert('Request failed.');
}
};
xhr.send(data);
}
в просмотрах:
def compare(request):
if request.method == 'POST':
compare_res = request.POST.getlist('brand')
.
.
.
response_data = {
'brands': d3,
'redirect_url': 'http://127.0.0.1:8000/demo/'}
return JsonResponse(response_data)
return render(request, 'prodcutSearch/compare_in.html')
в URL:
urlpatterns = [
path('compare_in/', views.compare, name='compare'),
path('demo/', views.demo, name='demo'),
]