如何修复"execution of 'Constant' statements is denied"错误?



我正在学习模板的web.py文档中的教程

import web
render = web.template.render('templates')
print (render.hello('world'))

然而,当运行python文件时会导致一个错误:"拒绝执行'Constant'语句"。谷歌搜索没有找到任何答案,我需要一些帮助。谢谢

web.py不允许在模板中执行某些类型的python法律声明。我不知道为什么它不允许你的特定语句,但有一种方法可以让模板做得更多:

web/template.py包含一个列表ALLOWED_AST_NODES,它是模板中允许的结构(由抽象语法树解析器使用(。你可以改变这一点。

在代码中添加一次:

from web.template import ALLOWED_AST_NODES
ALLOWED_AST_NODES.append('Constant')

现在,这应该没有必要,所以我怀疑您的代码中还有其他内容。。。。也许是混合版本?我相信"常量"是Python 3 AST中的一个节点,但不是Python 2中的一个?

这是一种将字典理解.append('DictComp')添加到模板允许的ast节点的有用技术,因为它已经允许列表理解。

相关内容

最新更新