- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 Flask web 框架中使用方括号或点符号有什么区别?两者似乎都有效,例如:
在 Python 脚本中,我可以设置 session['username'] = 'Geraint'
。然后我可以使用 {{ session['username'] }}
或 {{ session.username }}
两者有什么区别?文档似乎支持点符号,所以应该在所有 情况下使用点符号吗?
最佳答案
这是 Jinja2 的一个特性,参见 Variables section Template Designer 文档:
You can use a dot (
.
) to access attributes of a variable in addition to the standard Python__getitem__
“subscript” syntax ([]
).
这是一个方便的功能:
For the sake of convenience,
foo.bar
in Jinja2 does the following things on the Python layer:
- check for an attribute called bar on foo (
getattr(foo, 'bar')
)- if there is not, check for an item
'bar'
in foo (foo.__getitem__('bar')
)- if there is not, return an undefined object.
foo['bar']
works mostly the same with a small difference in sequence:
- check for an item
'bar'
in foo. (foo.__getitem__('bar')
)- if there is not, check for an attribute called bar on foo. (
getattr(foo, 'bar')
)- if there is not, return an undefined object.
This is important if an object has an item and attribute with the same name. Additionally, the
attr()
filter only looks up attributes.
因此,如果您使用属性访问 ({{ session.username }}
),那么 Jinja2 将首先查找属性,然后是键。自 Flask session
object是一本字典,这意味着您可能会得到错误的结果;如果您在 session 中的键 get
下存储了数据,session.get
返回一个字典方法,但是 session['get']
会返回与 'get'
键关联的实际值。
关于python - Flask 模板中点符号和方括号之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29703154/
我一直想知道两者之间有什么区别 mov esi,eax 和 mov [esi],eax 曾经是。 感谢任何帮助。 最佳答案 mov esi,eax 将寄存器eax的内容写入寄存器esi。 mov [e
如果有人能帮助我满足 JAVA 正则表达式要求,我将不胜感激我有一个像 "/ABC/KLM[XYZ/ABC/KLM]/ABC"这样的字符串 我想替换所有不用方括号括起来的ABC。在这种情况下,只应找到
我需要替换 key:value 对周围的方括号,类似于以下内容。任何帮助深表感谢! “属性”中的数据如下所示: name: property1 value: [12345667:97764458] *
我正在尝试使用某种 grok 模式来使用以下日志记录格式: *Sun 07:05:18.372 INFO [main] [userID] perf - 0ms - select x from y 我
我在 R 中有一个函数,看起来有点像这样: setMethod('[', signature(x="stack"),definition=function(x,i,j,drop){ new('cl
我将这些定义放在一个文件中: x = 'a' : 'b' : 'c' : [] y = ['a', 'b', 'c'] (重要的是在文件中定义它们,而不是在 GHCi 中,因为在后一种情况下,事情变得
我喜欢将DocBlockr插件用于精美文字,但我希望自己的评论有所不同。 正常出现: 以及我希望它们出现的方式: 因此,是否有这样做的type,description和[]方括号呢?我已经搜寻了一下,
让我们考虑以下是我的对象: var n = {"aa":"x","dd":'d'}; 我在 Object.assign 中使用方括号.它给出了以下结果。 [aa: "x", dd: "d"] .最终代
我正在尝试使用正则表达式从 KEY PAIR VALUE 中找出 VALUE。 VALUE 可以有 [ ](方括号)。如果 VALUE 中存在 [ ](方括号),那么我只想提取 [ ] 之外的字符。
这个问题在这里已经有了答案: What is array literal notation in javascript and when should you use it? (4 个答案) 关闭
这个问题在这里已经有了答案: What do square brackets around a property name in an object literal mean? (2 个答案) 关闭
我有一个语法标记指定为: list_value = Suppress(oneOf("[ (")) + Group( delimitedList(string_value | int_value
如何替换这种格式的标记: [a href="/my_page" style="font-size: 13px"]click me[/a] 到 click me 使用 preg_replace()? 我
使用下面的代码,我可以将 Number123(45) 转换为 Number。 $string = 'Number123(45)'; $string2 = preg_replace('/[0-9]+
我知道硬括号('[' 和 ']')用于标识数组,但是在搜索如何使用事件时,我偶然发现了它们的另一种用法,并且想知道它到底意味着什么...... 我看到的代码 ( link ) 如下所示: // evh
This question already has an answer here: gRPC/Protobuf 3 syntax: what is the difference between rpc
在vim中,您可以通过vi“,vi [,vi(... 例如,如果您有这样的一行: x = "difference between vim and emacs" 并且光标位于这些引号之间的任意位置,然后
AngularJS将方括号用作其指令的参数 (input[number]) 但是Jade also uses square brackets for class attributes。 所以这行不通
正则表达式中的点. 匹配任何单个字符。为了使正则表达式匹配点,必须对点进行转义:\. It has been pointed out to me方括号 [] 内的点不必转义。例如,表达式:[.]{3}
这个问题已经有答案了: What is the difference between square brackets and parentheses in a regex? (3 个回答) 已关闭 8
我是一名优秀的程序员,十分优秀!