test.py:
import web
render = web.template.render('templates/')
urls = (
'/', 'index'
)
class index:
def GET(self):
name='Bob'
return render.test(name)
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
шаблонов / тестов. html:
$def with (name)
$if name:
I just wanted to say <em>hello</em> to $name.
$else:
<em>Hello</em>, world!
Среда: Python38 x64, Windows 10, Web.py == 0,4
Сведения об ошибке:
raise SecurityError("\n".join([str(err) for err in self.errors]))
web.template.SecurityError: templates\test.html:3 - execution of 'Constant' statements is denied
templates\test.html:7 - execution of 'Constant' statements is denied
templates\test.html:7 - execution of 'Constant' statements is denied
templates\test.html:7 - execution of 'Constant' statements is denied
templates\test.html:9 - execution of 'Constant' statements is denied
Решение найдено:
Как исправить ошибку "выполнение операторов 'Constant' запрещена"?
Как предложил pbuck, просто добавьте:
from web.template import ALLOWED_AST_NODES
ALLOWED_AST_NODES.append('Constant')
и все работает!
Вопрос:
Почему он запрещает мое конкретное утверждение в тесте. html ( Вы не уверены, что означает "Константа" - это узел в python3 AST, но не в python2 "в ответе pbuck)?
Есть ли проблемы с моим кодом?
Почему / Как работает решение?