在django模板中访问会话值

时间:2013-06-13 05:49:12

标签: django session django-templates

我正在设置

request.session['total_items'] = 3

在django应用程序的views.py文件中

在模板中  我知道您可以{{request.session.total_items}}

访问它

一切都很好,我能够获得价值。

但是,我的问题是为什么它不是{{request.session['total_items']}},因为request.session是一个像对象这样的字典。

对于{{request.session['total_items']}},它给出如下错误:

Could not parse the remainder: '['total_items']' from 'request.session['total_items']'

任何帮助将不胜感激......

2 个答案:

答案 0 :(得分:2)

不要将Django模板语言与Python语法混淆。 Django模板语言本身就是一种语言,并且有自己的表现方式。正如doc所暗示的那样:

  

目标不是发明一种编程语言。目标是提供   足够的编程式功能,例如分支和   循环,这对于做出与演示相关的决定至关重要。

答案 1 :(得分:1)

启用django.core.context_processors.request后,它将允许使用.表示法访问类字典对象的值。 这会将任何Python对象转换为Django模板语言将理解的东西,因为它是它自己的语言。

这也适用于以下情况:

  1. 属性查找(例如myobject.age)
  2. 方法调用(例如myobject.age())
  3. 列出索引(例如mylist.1)
  4. 在幕后工作的是Context object. 您可以详细了解其工作原理herehere

    您可以将Python控件结构if与Django的模板语言进行比较。

    if object:
        myobject.dostuff()
    

    {% if object %}
        {{ myobject.dostuff }}
    {% endif %}
    

    如果您想要与Python进行 close 匹配,请查看