在 GAE 应用程序中加载外部模板?

Posted

技术标签:

【中文标题】在 GAE 应用程序中加载外部模板?【英文标题】:Loading an external template in GAE application? 【发布时间】:2014-04-07 08:48:55 【问题描述】:

有没有办法从应用程序本身未托管的源加载模板?例如,为了在应用程序本身(由 appengine 应用程序托管)上加载模板:

html = template.render("admin/my_template.html", params)

我想做这样的事情:

html = template.render("http://www.otherhost.com/external_template.html", params)

有允许这种行为的机制吗?

谢谢

【问题讨论】:

你能举例说明你为什么要这样做吗?您确定外部文件实际上是一个 Django 模板,而不仅仅是一个静态 HTML 页面吗? 如果文件是应用程序的一部分,每次我想更改它时,我都需要重新部署整个应用程序。另一方面,如果模板是外部的,我可以独立编辑它。 好吧,从外部站点加载它似乎不是解决该问题的好方法 - 例如,考虑增加的延迟。也许您可以考虑从数据存储区或云存储中加载它? 我主要使用这些模板来发送电子邮件 - 所以延迟在这里不是问题。将其保存在数据存储中将需要为数据库中的 HTML 等实现一个编辑器。但是如果没有从其他地方加载文件的简单解决方案,我可能不得不这样做 【参考方案1】:

模板只是字符串。如果你能得到文本,你可以把它解析为一个模板。

在这种情况下,您需要使用 urllib 请求文件,获取响应,然后使用 template.Template(content) 将其转换为模板对象。

但是,我必须说,我仍然认为将其保存在数据存储中是更好的选择。我不确定您为什么需要一个编辑器 - 为什么不直接将内容剪切并粘贴到 GAE 管理控制台中的字段中,或者使用远程 API 进行设置?

【讨论】:

【参考方案2】:

当然,您可以从其他应用程序加载模板。要加载模板,您必须获取模板。

但是使用编辑器也不是很困难。我使用 codemirror 来编辑 HTML 文本区域。 请参阅此演示列表:http://codemirror.net/demo/

编辑 Jinja txt 邮件模板示例:

【讨论】:

以上是关于在 GAE 应用程序中加载外部模板?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的组件VUE 2(webpack)中加载外部js文件?

在 framework7 包装器中加载外部页面

如何在 div 中加载外部 Angular 应用程序? [关闭]

在 PhoneGap/Sencha Touch 中加载外部 Web 服务

选择在 iOS 应用上的外部浏览器中加载的内容

无法在本地的 Sharepoint 2019 中加载或应用外部 CSS 文件