Python Bottle 模板引擎不允许句点
Python Bottle template engine does not allow period
看起来 Bottle 模板引擎在它的模板变量中没有句号。以下代码:
from bottle import template
x = 'blah {{blah.blah}} blah'
d = {'blah.blah': 'doodah'}
template(x, **d)
给我这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "E:\WPy-3662\python-3.6.6.amd64\lib\site-packages\bottle.py", line 3622, in template
return TEMPLATES[tplid].render(kwargs)
File "E:\WPy-3662\python-3.6.6.amd64\lib\site-packages\bottle.py", line 3411, in render
self.execute(stdout, env)
File "E:\WPy-3662\python-3.6.6.amd64\lib\site-packages\bottle.py", line 3398, in execute
eval(self.co, env)
File "<string>", line 1, in <module>
NameError: name 'blah' is not defined
我需要月经。我将模板保存在多行字符串数组中,然后将字典数组传递给 Bottle 模板引擎。
我该如何解决这个问题?
所以问题不在于 Bottle,而在于 python 在 eval 期间如何解析变量。
模板字符串blah.blah
当运行通过eval创建一个变量名blah.blah时,它变成了两部分符号。
blah.blah = 'doodah'
无法工作。尽管它确实在字典中起作用,因为它是一个字符串名称。如果用下划线替换点,它将起作用,因为下划线是有效的变量名。
看起来 Bottle 模板引擎在它的模板变量中没有句号。以下代码:
from bottle import template
x = 'blah {{blah.blah}} blah'
d = {'blah.blah': 'doodah'}
template(x, **d)
给我这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "E:\WPy-3662\python-3.6.6.amd64\lib\site-packages\bottle.py", line 3622, in template
return TEMPLATES[tplid].render(kwargs)
File "E:\WPy-3662\python-3.6.6.amd64\lib\site-packages\bottle.py", line 3411, in render
self.execute(stdout, env)
File "E:\WPy-3662\python-3.6.6.amd64\lib\site-packages\bottle.py", line 3398, in execute
eval(self.co, env)
File "<string>", line 1, in <module>
NameError: name 'blah' is not defined
我需要月经。我将模板保存在多行字符串数组中,然后将字典数组传递给 Bottle 模板引擎。
我该如何解决这个问题?
所以问题不在于 Bottle,而在于 python 在 eval 期间如何解析变量。
模板字符串blah.blah
当运行通过eval创建一个变量名blah.blah时,它变成了两部分符号。
blah.blah = 'doodah'
无法工作。尽管它确实在字典中起作用,因为它是一个字符串名称。如果用下划线替换点,它将起作用,因为下划线是有效的变量名。