Шаблонный движок Python Bottle не допускает точку - PullRequest
0 голосов
/ 24 января 2019

Похоже, что шаблонный движок 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 голосов
/ 25 января 2019

Так что проблема не в Bottle, а в том, как python анализирует переменные во время eval.

Строка шаблона blah.blah При запуске через eval создает имя переменной blah.blah, которое превращается в нотацию из двух частей.

blah.blah = 'doodah'

не может работать.Хотя это работает в словаре, так как это имя строки.Если вы замените точку подчеркиванием, это сработает, потому что подчеркивание является допустимым именем переменной.

...