如何修复 "execution of 'Constant' statements is denied" 错误?
How to fix "execution of 'Constant' statements is denied" error?
我正在学习 web.py 模板文档中的教程
import web
render = web.template.render('templates')
print (render.hello('world'))
然而,当 运行 时,python 文件会导致错误:"execution of 'Constant' statements is denied"。 Google 搜索没有找到任何答案,我需要一些帮助。谢谢
web.py 不允许在模板中执行某些类型的 python 合法语句。我不知道为什么它不允许你的特定声明,但有一种方法可以让模板做更多的事情:
web/template.py 包含一个列表 ALLOWED_AST_NODES
,它是模板中允许的构造(由抽象语法树解析器使用)。你可以改变它。
在您的代码中,添加一次:
from web.template import ALLOWED_AST_NODES
ALLOWED_AST_NODES.append('Constant')
现在,这应该不是必需的,所以我怀疑您的代码中还有其他问题……可能是版本混合?我相信 'Constant' 是 python3 AST 中的一个节点,但不是 python2?
这是一项有用的技术,可以将字典理解 .append('DictComp')
添加到模板允许的 ast 节点,因为它已经允许列表理解。
我正在学习 web.py 模板文档中的教程
import web
render = web.template.render('templates')
print (render.hello('world'))
然而,当 运行 时,python 文件会导致错误:"execution of 'Constant' statements is denied"。 Google 搜索没有找到任何答案,我需要一些帮助。谢谢
web.py 不允许在模板中执行某些类型的 python 合法语句。我不知道为什么它不允许你的特定声明,但有一种方法可以让模板做更多的事情:
web/template.py 包含一个列表 ALLOWED_AST_NODES
,它是模板中允许的构造(由抽象语法树解析器使用)。你可以改变它。
在您的代码中,添加一次:
from web.template import ALLOWED_AST_NODES
ALLOWED_AST_NODES.append('Constant')
现在,这应该不是必需的,所以我怀疑您的代码中还有其他问题……可能是版本混合?我相信 'Constant' 是 python3 AST 中的一个节点,但不是 python2?
这是一项有用的技术,可以将字典理解 .append('DictComp')
添加到模板允许的 ast 节点,因为它已经允许列表理解。