jinja2.exceptions.UndefinedError:'function'未定义

时间:2014-07-09 00:13:42

标签: python nginx flask jinja2 uwsgi

我在nginx + uwsgi上运行一个烧瓶服务器。当我通过python server.py运行烧瓶服务器时,我可以在我的jinja2模板中使用id_encode函数,不会抛出任何错误。

但是,当我通过

启动(server.py)时

uwsgi --socket 0.0.0.0:8002 --module server --callab app

它会崩溃,说它无法找到函数id_encode

jinja2.exceptions.UndefinedError: 'id_encode' is undefined

通过声明:

if __name__ == '__main__':
    app.jinja_env.globals.update(id_encode=id_encode)
    app.run(host=host,port=5000, debug=True)

导致此问题的原因是什么?如何使该功能可用?

1 个答案:

答案 0 :(得分:2)

问题是只有当脚本运行作为顶级脚本时才会执行__main__块。 uwsgi 导入您的模块,因此永远不会运行__main__块。将您的app.jinja_env.globals.update(id_encode=id_encode)移到__main__块之外,一切都应该正常运行。