替换jquery-template标记

时间:2010-12-09 11:41:10

标签: django template-engine jquery-templates

有没有办法替换jquery-tmpl上的主标签?

示例:

var data = {姓名:'Pele',语言:[“葡萄牙语”,“英语”,“西班牙语”]};

因此,在脚本标记上,我们定义了以下模板

名称:$ {Name} {{每种语言}}  我说价值 {{/每}}

我想改变的是...... 不使用{{each}}我会使用像$$每个$$这样的东西 而不是$ {Name}我会使用$#Name $

之类的东西

你可能会问自己为什么要这样做。

主要原因是当我在项目中我们正在使用Django并且当我们放置像{{each}}这样的代码时(甚至在类型设置为text / html的脚本标签上)Django视图引擎认为它是一个服务器标记,并尝试呈现它,如果它是服务器端标记。

更新的 我正在寻找的是一种在jQuery-tmpl上设置Delimeter的方法,就像在Mustache.js上可用的那样。 http://mustache.github.com/mustache.5.html(寻找设置分隔符

感谢。

3 个答案:

答案 0 :(得分:1)

当然,如果您想在HTML中使用文字{,请将templatetagopenblock一起使用。

{% templatetag openblock %}

如果您想要文字},请使用closeblock

{% templatetag closeblock %}

因此,如果您想在HTML中使用{{each}},请使用:

{% templatetag openblock %}{% templatetag openblock %}each{% templatetag closeblock %}{% templatetag closeblock %}

答案 1 :(得分:1)

另一种方法是在js文件中定义模板,该模板不会被django作为模板处理。

如果不可能,那么Dominic方法的另一种替代方法是定义'{{'和'}}'的变量,或者相应地使用jqtmpl_open和jqtmpl_close,并在模板中使用它们,如下所示:

{{ jqtmpl_open }}each Languages{{ jqtmpl_close }}

这在模板中更具可读性。

更改jquery-tmpl的分隔符很复杂。通过查看代码,似乎{{在那里的一些正则表达式中是硬编码的。

var oldManip = jQuery.fn.domManip, tmplItmAtt = "_tmplitem", htmlExpr = /^[^<]* (<[\w\W]+>)[^>]*$|\{\{\! /,
   newTmplItems = {}, wrappedItems = {}, appendToTmplItems, topTmplItem = { key: 0, data: {} }, itemKey = 0, cloneIndex = 0, stack = [];

唯一的解决方案是为您的项目分叉jquery-tmpl并更改这些硬编码的正则表达式以满足您的需求。

答案 2 :(得分:0)

此问题已经在jquery template tags conflict with Django template!提出,但我想我会从我的经验中加以补充。

简而言之,我已将此自定义“原始”模板标记添加到我的jquery-tmpl / django项目中:http://www.holovaty.com/writing/django-two-phased-rendering/