Python Bottle模板引擎不允许使用期限

时间:2019-01-24 20:05:39

标签: python bottle

似乎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模板引擎。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

所以问题不在于Bottle,而是python在eval期间如何解析变量。

模板字符串blah.blah在运行eval时会创建一个变量名blah.blah,该变量变成了两个部分的符号。

blah.blah = 'doodah'

无法工作。尽管它确实是字典名,但是它是一个字符串名。如果将下划线替换为下划线,则它将起作用,因为下划线是有效的变量名称。