Python “金甲2号”;包括「;声明不适用于Google AppEngine
我正在googleappengine上开发一个pythonweb应用程序,使用Jinja2作为模板管理器。在我的一个页面中,我使用“include”语句将另一个HTML页面插入到主页中。它在我的本地机器(PyCharm 5.0.4 IDE)上运行得很好,但是,当将应用程序上传到生产环境时,它中断了,说找不到模板 以下是包含声明:Python “金甲2号”;包括「;声明不适用于Google AppEngine,python,google-app-engine,jinja2,template-engine,Python,Google App Engine,Jinja2,Template Engine,我正在googleappengine上开发一个pythonweb应用程序,使用Jinja2作为模板管理器。在我的一个页面中,我使用“include”语句将另一个HTML页面插入到主页中。它在我的本地机器(PyCharm 5.0.4 IDE)上运行得很好,但是,当将应用程序上传到生产环境时,它中断了,说找不到模板 以下是包含声明: {% include '/widgets/transaction/add-transaction-modal/add-transaction-modal.html' %
{% include '/widgets/transaction/add-transaction-modal/add-transaction-modal.html' %}
我还尝试通过添加到include语句来放置完整的URL,但仍然得到相同的错误
这是我的Jinja2配置:
JINJA_ENVIRONMENT = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.join(os.path.join(os.path.dirname(__file__), os.pardir), 'templates')),
extensions=['jinja2.ext.autoescape'])
这是app.yaml:
- url: /widgets
static_dir: app/templates/widgets
这是文件夹结构:
+ APP
+ static
- css
- js
- img
+ templates
+ pages
- dashboard.html (contains de include statement to the widget)
+ widgets
- add-transaction-modal.html
- add-transaction-modal.js
这真的很奇怪,因为它可以在我的本地开发服务器上正常工作。我的猜测是,这个问题与应用程序引擎产品环境的某些细节有关,而不是与Jinja2本身有关
你有什么想法吗
谢谢 它在include路径中没有前导斜杠的情况下工作吗?你的
app.yaml
看起来像什么?如果/widgets/transaction/add transaction model
位于静态目录中,则这些文件的服务方式不同于非静态文件(默认情况下)。包含include
语句的模板在哪里?@DanielRoseman即使删除前导斜杠也无法修复it@mgilson关于静态目录,我想你是对的。我用与小部件目录相关的app.yaml内容更新了这个问题,还添加了我正在使用的文件夹结构Daniel是正确的。在静态目录中不能有代码需要读取的模板。它必须与您的代码一起部署(它是代码)。