Ger*_*son 5 python jinja2 flask
在 Flask Web 框架中使用方括号或点符号有什么区别?两者似乎都有效,例如:
在Python脚本中我可以设置session['username'] = 'Geraint'. {{ session['username'] }}然后我可以使用或访问模板{{ session.username }}
两者有什么区别?该文档似乎更喜欢点符号,所以应该在所有情况下使用它吗?
这是 Jinja2 的一个功能,请参阅模板设计器的变量部分:
\n\n\n\n\n\n
.除了标准 Python__getitem__\xe2\x80\x9csubscript\xe2\x80\x9d 语法 ( ) 之外,您还可以使用点 ( ) 来访问变量的属性[]。
这是一个方便的功能:
\n\n\n\n\n为了方便起见,
\n\nfoo.barJinja2中在Python层做了以下事情:\n
\n\n- 检查foo ( )上名为bar 的属性
\ngetattr(foo, \'bar\')- 如果没有,则检查foo ( )
\n\'bar\'中是否有项目foo.__getitem__(\'bar\')- 如果不存在,则返回一个未定义的对象。
\n\n\n
foo[\'bar\']工作原理基本相同,但顺序略有不同:\n
\n\n- 检查foo
\n\'bar\'中的项目。( )foo.__getitem__(\'bar\')- 如果没有,请检查foo上是否有名为bar 的属性。( )
\ngetattr(foo, \'bar\')- 如果不存在,则返回一个未定义的对象。
\n如果对象具有同名的项目和属性,这一点很重要。此外,
\nattr()过滤器仅查找属性。
因此,如果您使用属性 access( {{ session.username }}),那么 Jinja2 将首先查找属性,然后查找键。由于Flasksession对象是一个字典,这意味着您可能会得到错误的结果;get如果您在会话中的键下存储了数据,session.get则返回字典方法,但session[\'get\']会返回与该键关联的实际值\'get\'。
| 归档时间: |
|
| 查看次数: |
5363 次 |
| 最近记录: |