如何解决“'常量'语句的执行被拒绝”错误?

时间:2019-10-23 08:18:22

标签: python constants web.py

我正在遵循web.py文档中的模板指南

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

但是,当运行python文件时,会导致错误:“'Constant'语句的执行被拒绝”。 Google搜索没有找到任何答案,请给我一些帮助。谢谢

1 个答案:

答案 0 :(得分:0)

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

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

在您的代码中,添加一次:

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

现在,这不是必须的,所以我怀疑您的代码中还有其他事情在发生......可能是多种版本?我相信“常数”是python3 AST中的一个节点,而不是python2中的一个节点吗?

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