如何修复 "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 节点,因为它已经允许列表理解。