Изменение переменной сеанса после визуализации представлений Django

-2

У меня есть две переменные сеанса, которые необходимо изменить после рендеринга. Когда я попробую following-

def my_view(request) 
    rend= render(request,"chat_page.html",{"answer":questions[request.session["stage"]]["instruction"]})
    request.session["stage"]=request.session["stage"]+1

    return rend

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

  • 0
    после рендеринга вы имели в виду, что хотите изменить stage только после рендеринга шаблона? Это невозможно, я думаю. Но почему вы хотите изменить его только после рендеринга?
  • 0
    Это базовое приложение для чата, где stage - это, в основном, номер вопроса, по которому необходимо выполнить рендеринг. Как только рендеринг завершен, ответ снова вызывает ту же страницу с stage = stage + 1, который является следующим вопросом и, следовательно, должен быть отображен. в настоящее время.
Показать ещё 1 комментарий
Теги:

1 ответ

0

Я считаю, что вам нужно будет вручную создать HttpResponse и вставить визуализированную строку, поскольку метод render возвращает итератор, который не оценивается до последнего момента.

content = render_to_string("chat_page.html",{"answer":questions[request.session["stage"]]["instruction"]})
response = HttpResponse(content)
request.session["stage"] = request.session["stage"] + 1
return response
  • 0
    Это не работает. Все же значение, переданное в request.session ["stage"] в содержимом, на единицу больше, чем должно быть.
  • 0
    Извините, порядок вышеуказанного кода был неправильным. Вам нужно будет создать ответ перед сменой сеанса. Я обновил ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню