如何在Django的HTML模板中设置会话变量?

时间:2019-02-06 05:09:01

标签: django django-forms django-templates

我正在尝试在模板中为Django会话设置值,然后在视图中使用posible。

我正在做这样的事情

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

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

  </html>
{% endblock %}  

2 个答案:

答案 0 :(得分:1)

这可能不是一个好主意,有几个原因:

  • 模板应仅处理演示文稿。如果要在模板中放置逻辑,则应将其表示为逻辑。在模板中放置业务逻辑违反了SoC(关注点分离)。

  • 渲染模板通常是视图中要做的最后一件事,因此如果您已经将数据发送到浏览器(并且渲染了模板),则很难将猫放回书包中但尚未通过管道发送数据,您可以只更新视图中的值,而不必尝试在模板中进行操作。

如果要与用户进行交互,传统的方式是使用表单(即使它是仅带有“提交”按钮的表单)-或使用AJAX将数据发布到前端的服务器中。

答案 1 :(得分:0)

您可以将django.core.context_processors.request添加到TEMPLATE_CONTEXT_PROCESSORS中的settings.py中,然后可以执行{{ request.session.fav_color }}以确保您传递render(request."template.html",{}),以便模板具有请求上下文。