App Engine 中的模板目录是如何设置的?

Posted

技术标签:

【中文标题】App Engine 中的模板目录是如何设置的?【英文标题】:How is the template directory set in App Engine? 【发布时间】:2011-08-09 02:39:12 【问题描述】:

我目前将我的模板保存在/projectdir/static/html/。我已经开始拥有足够的它们,所以我创建了一个子目录:/projectdir/static/html/tag_request/。如果我想在/tag_request/ 中有一个模板继承自/html/ 中的一个模板,我该怎么做?

我读过 django % extends base.html % 应该写成相对于/projectdir/templates/TEMPLATE_DIRS 指向的任何地方。如何在 appengine 中设置TEMPLATE_DIRS(或者我必须将我的模板放入/projectdir/templates/)?

谢谢!

【问题讨论】:

您不应该将程序数据(例如,模板)存储在静态目录中。如果您在 app.yaml 中将其标记为静态,则上传后将无法从您的代码中访问它。 谢谢。所以最好的解决方案是将我的模板移动到'/projectdir/templates/'并相应地调整我的代码(因为它不应该是静态的)?顺便说一句,“可从您的代码访问”是什么意思?该应用程序部署正常。当我将模板放入静态时,我会失去什么? 我刚刚开始实施我上次评论中提到的更改,我注意到我从未在我的 app.yaml 中引用 /html/。它只能通过 main.py 访问。这就是我到目前为止没有任何问题的原因吗? 只有在 app.yaml 中将 /static 列为 static_dir 时才会出现问题,这似乎很可能是给定的名称。静态文件由前端直接提供,无需您的应用参与,因此无法通过代码访问。 啊。我的 app.yaml 只列出了 static 的子目录(例如static/cssstatic/js)。 【参考方案1】:

这似乎取决于您使用的 Django 版本。

如果您使用的是 0.96,那么就可以了:

% extends ../base.html %

如果您使用的是 1.2,那么理论上您需要创建一个 settings.py 将 TEMPLATE_DIRS 设置为 /projectdir/static/html/,然后使用:

% extends base.html %

但是我发现了一些问题 - 我的解决方案如下所述:

App engine default Django version change

【讨论】:

谢谢。直到星期四我才能回到这个话题。但我会回来的。

以上是关于App Engine 中的模板目录是如何设置的?的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine 中的 Django 自定义模板标签

Python - Google App Engine - Django 模板中的方法

覆盖部署到 Google App Engine 的 Django 应用中的模板

使用 Google App Engine(Webapp)访问 Django 模板中的会话变量 - Python

如何使用带有 python 的 App Engine 国际化 Django HTML 模板?

如何将 Django 的标记模板标签与 Google App Engine WebApp 框架一起使用