模板中的动态会话访问

时间:2011-07-31 20:37:58

标签: python django templates session

我正在尝试在需要动态的循环中访问会话密钥,我想通过查看我的代码无法正常工作,我会得到我想要的东西。

{% for q in questions %}
<div class="question_wrap">
    <h2>{{ q }}</h2>

    # this does not work
    {% if not request.session.get(str(q.id), False) %}
        <!-- show them vote options -->
    {% else %}
        <!-- dont show options -->
    {% endif %}

</div>
{% endfor %}

1 个答案:

答案 0 :(得分:2)

Django模板的语法非常有限,以防止人们在模板中放入太多逻辑,并且不允许您将参数传递给方法。

您可以准备视图中已有的元组列表,也可以为其编写一个简单的模板标记。第一个选项通常更容易:

在视图中:

questions = [(q, request.session.get(str(q.id), False)) for q in questions]

在模板中:

{% for q, has_voted in questions %}
...
{% endfor %}