Отправить данные из шаблона для просмотра - PullRequest
0 голосов
/ 13 мая 2019

Я создаю проект сравнения телефонов.В этом случае, когда пользователь нажимает кнопку сравнения, появляется боковая навигация, и он будет добавлять товары динамически, нажимая кнопку добавления, когда пользователь завершит добавление товаров.затем пользователь нажимает на другую кнопку сравнения для сравнения продуктов, и все названия продуктов идут в виде массива с представлениями из шаблона.

теперь в представлениях функция сравнения будет очищать данные наНа основе значения массива создайте словарь и отобразите словарь в 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'),
  ]
...