Как загрузить шаблон html с параметрами в Ajax обратном вызове (Django сервер) - PullRequest
0 голосов
/ 27 апреля 2020

Когда мой пользователь входит в систему, я хочу проверить 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;
  }
}

Я новичок и действительно застрял здесь на некоторое время - любая помощь оценили!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...