Как установить переменную сеанса в шаблоне HTML в Django? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь установить значение для сеанса Django в шаблоне, а затем возможно использовать в представлении.

Я делаю что-то вроде этого

{% block body %}
    <html>
     {%  request.session.fav_color="red"  %}

    <div> Is your favorite color {{ request.session.fav_color}} ?</div>

  </html>
{% endblock %}  

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Вы можете добавить django.core.context_processors.request к TEMPLATE_CONTEXT_PROCESSORS в settings.py, затем вы можете {{ request.session.fav_color }} убедиться, что вы передаете render(request."template.html",{}), чтобы шаблон имел контекст запроса.

0 голосов
/ 06 февраля 2019

Существует несколько причин, по которым это может быть не очень хорошей идеей:

  • Шаблоны должны работать только с презентацией.Если вы размещаете логику в шаблоне, она должна быть логикой представления.Размещение бизнес-логики в шаблоне является нарушением SoC (разделения интересов).

  • Рендеринг шаблона часто является одной из последних вещей, которые вы делаете в представлении, поэтому трудновернуть кота в сумку, если вы уже отправили данные в браузер (и если вы отрисовали шаблон, но не отправили данные по конвейеру, вы можете просто обновить значение в представлении вместо попытки сделать это вшаблон).

Если вы взаимодействуете с пользователем, традиционным способом сделать это является использование формы (даже если это форма с единственной кнопкой отправки) - или отправка данных на сервер винтерфейс с использованием AJAX.

...