然而,我尝试在HTML中为mustache.js走私HTML模板 django模板引擎删除应该是的所有占位符 按原样输出到前端
模板以这种方式包含在HTML中:
<script type="text/x-mustache-template" data-id="header_user_info">
<div id="header_user_info">
<div id="notification">0</div>
<a href="#">{{username}}</a>
</div>
</script>
我可以通过运行$(el).html()和generate来获取HTML模板 html使用Mustache.to_html(temp,data);
我可以把所有模板放到另一个静态文件中并从中提供服务 CDN,但是很难跟踪模板所属的位置, 以及至少一个额外的http请求。
答案 0 :(得分:48)
您只需更改标记:
Mustache.tags = ['[[', ']]'];
答案 1 :(得分:24)
您可以使用{% templatetag %}
模板标签打印出通常由Django处理的字符。例如:
{% templatetag openvariable %} variable {% templatetag closevariable %}
HTML中的结果如下:
{{ variable }}
有关参数的完整列表,请参阅:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#templatetag
答案 2 :(得分:22)
如果你使用django 1.5和更新的使用:
{% verbatim %}
{{if dying}}Still alive.{{/if}}
{% endverbatim %}
如果你坚持使用django 1.2 on appengine,请使用verbatim模板命令扩展django语法,如下所示...
from django import template
register = template.Library()
class VerbatimNode(template.Node):
def __init__(self, text):
self.text = text
def render(self, context):
return self.text
@register.tag
def verbatim(parser, token):
text = []
while 1:
token = parser.tokens.pop(0)
if token.contents == 'endverbatim':
break
if token.token_type == template.TOKEN_VAR:
text.append('{{')
elif token.token_type == template.TOKEN_BLOCK:
text.append('{%')
text.append(token.contents)
if token.token_type == template.TOKEN_VAR:
text.append('}}')
elif token.token_type == template.TOKEN_BLOCK:
text.append('%}')
return VerbatimNode(''.join(text))
在你的文件(python 2.7,HDR)中使用:
from django.template import Context, Template
import django
django.template.add_to_builtins('utilities.verbatim_template_tag')
html = Template(blob).render(Context(kwdict))
在你的文件(python 2.5)中使用:
from google.appengine.ext.webapp import template
template.register_template_library('utilities.verbatim_template_tag')
来源: http://bamboobig.blogspot.co.at/2011/09/notebook-using-jquery-templates-in.html
答案 3 :(得分:6)
{% load mustachejs %}
{% mustachejs "main" %}
Django-mustachejs将生成以下内容:
<script>Mustache.TEMPLATES=Mustache.TEMPLATES||{};Mustache.TEMPLATES['main']='<<Your template >>';</script>
答案 4 :(得分:2)
我有同样的问题,但使用
{% templatetag openvariable %} variable {% templatetag closevariable %}
对我来说太冗长了。我刚刚添加了一个非常简单的自定义模板标记:
@register.simple_tag
def mtag(tagContent):
return "{{%s}}" % tagContent
所以我现在可以写:
{% mtag "variable" %}
答案 5 :(得分:1)
我有同样的问题,所以大部分时间我的变量都是可翻译字符串的一部分。
{% trans "The ball is {{ color }}" %}
即使您不提供i18n,也可以使用trans模板标签。
答案 6 :(得分:1)
您可以使用内置的mustache.js set delimiter标记来更改小胡子使用的默认标记。
即
{{=<% %>=}}
现在你可以这样做:
<% variable %>