Javascript与Django模板化

时间:2011-06-29 21:28:53

标签: javascript django templates

我真的很想和Django一起使用Javascript模板系统。 Mustache.js(以及它的衍生物)的语法和风格真的很适合我。问题是Mustache使用的分隔符标签与Django的模板系统的语法不能很好地搭配。

有没有什么好方法可以一起使用它们?

我尝试使用this verbatim snippet正确呈现JS模板。该解决方案的问题是我有时需要JS内部的Django变量或URL。

我还尝试使用

更改Mustache的分隔符
{{=[[ ]]=}}

但是,这不允许使用部分标记,例如{{#}}。作者表示,他打算在未来的版本中完全删除该功能。

是否有任何Javascript模板库紧跟Mustache.js,但使用不同的分隔符?或者是否有其他解决方案来更改分隔符Mustache.js使用?

3 个答案:

答案 0 :(得分:4)

我使用了jquery与django的模板。最终我决定最好的方法是:

  • 将所有javascript放入静态javascript文件中并在没有任何服务器端处理的情况下提供它们
  • django模板中的
  • 提供所有html挂钩(id或类),但没有js。
  • 在js中使用'document.ready'加上jquery选择器将标签插入页面并附加事件
  • 如果js需要数据,则进行ajax调用。

我在最后一个上软化了,可能会将数据作为json块嵌入到django模板中,也许在模板底部还有一个简短的js,它只是设置变量/参数来指示js如何渲染页面 - 来自服务器端的一些线索告诉它该做什么。

因此:

  1. 转义字符之间的争用变为无问题
  2. 你不必一直问自己“这个代码是在服务器上还是在客户端上运行”,因为你不是想一次性写入一个文件
  3. 您的javascript代码必须更好地构建和重用

答案 1 :(得分:3)

change Mustache's delimiters看起来很容易,但我认为应该支持可配置的分隔符。

如果您无法接受,那么还有许多其他模板库,例如jquery-tmplunderscore.template

答案 2 :(得分:0)

EJS是一个非常好的模板系统。它使用<% %>标记。

修改:More templating libs

相关问题