【发布时间】:2014-03-06 22:36:57
【问题描述】:
我想使用 Django 模板变量渲染一些静态文件(尤其是 *.js)。我相信这是一个常见的用例,尤其是在做任何 AJAX-y 时;我不想在我的 .js 文件中硬编码 AJAX url,就像我想在我的 .html 文件中硬编码它们一样。 Buuuut 当然我不希望这些静态文件在每个客户端请求时都必须通过模板引擎运行,因为这会很慢。我指的是 URL(在编译/部署后不会更改)或静态(非数据库)模型属性之类的东西。 (我想有些用例可能会在运行时更改这些东西——毕竟这是 Python——但我认为它们并不常见)。对于一些可能的模板变量(例如模型字段),当然文件必须在客户端请求时渲染,但这不是我要说的。
那么通过模板引擎渲染我的一些静态文件,对于可能的模板变量的子集,可能与collectstatic同时呈现不是有意义吗?
据我所知,目前情况并非如此。需要明确的是,我正在寻找一种解决方案,在编译/部署时通过模板引擎渲染静态文件,以便在“客户端请求时”它们实际上是普通的旧静态文件。
这种方法可以避免这些黑客攻击:
免责声明:
- 是的,我知道有用于 javascript 的模板引擎(小胡子、车把、原型等)。当 Django 已经有一个模板引擎时,为什么还要向堆栈添加另一个模板引擎?加上语法冲突!这似乎很愚蠢。
- This 看起来需要破解它,但它很复杂并且没有完全实现。
所以:
- 是否有我缺少的解决方案?
- 如果没有,有没有办法挂钩到
collectstatic(如 pre-collectstatic 挂钩),允许在“收集”它们之前通过模板引擎呈现某些静态文件?
编辑: 还没有回应......这是一个非常愚蠢的问题,我错过了一些明显的东西吗?如果是这样...继续告诉我...
【问题讨论】:
-
大声笑我来晚了,读它作为 Django 通过寺庙献祭。哈哈哈。
-
所有三个答案看起来都是可行的解决方案。每个人都会获得赞成票。赏金是最全面的答案,在赏金授予时也有最多的投票(嗯,1,但仍然)。谢谢大家。
标签: javascript python django templates deployment