24

に同じ構文を使用し、しかし Djangoのテンプレートエンジンはフロントエンドにそのまま 出力する必要があり、すべてのプレースホルダを削除ジャンゴと口ひげ私はmustache.jsためのHTMLで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> 

と私は$(エル)の.html()を実行してHTMLテンプレートを取得し、Mustache.to_html(TEMPを使用して HTMLを生成することができます

テンプレートは、このようにHTMLに含まれていますデータ);

私は別の静的ファイルにすべてのテンプレートを入れて、 CDNからサーブ、しかしテンプレートが属する場所を追跡するのは難しいだろう、 と、少なくとも1件の余分httpリクエストができます。

+0

はこれを行うには良い方法のために私の答えを参照してください@Alasdair。 'templatetag'ソリューションはあまりにも冗長です。 – surjikal

+0

あなたのプロジェクトでは逐語タグを使用できます。 [このリンク](https://code.djangoproject.com/ticket/16318)をご覧ください。 –

答えて

21

通常、Djangoによって処理される文字をプリントアウトするには、{% templatetag %} templatetagを使用できます。例えば:あなたのHTMLに以下で

{% templatetag openvariable %} variable {% templatetag closevariable %} 

結果:引数の完全なリストについては

{{ variable }} 

は、以下を参照してくださいhttps://docs.djangoproject.com/en/dev/ref/templates/builtins/#templatetag

+0

ありがとうございます。わたしにはできる。 –

+1

その後、私の答えを受け入れる。おそらくあなたが求めている他の質問への回答も受け入れるべきです。 –

+0

いいね!このタグについては考えていませんでした。 –

6

django-mustachejs

{% load mustachejs %} 
{% mustachejs "main" %} 

ジャンゴを使用してみてください-mustachejsは以下を生成します:

<script>Mustache.TEMPLATES=Mustache.TEMPLATES||{};Mustache.TEMPLATES['main']='<<Your template >>';</script> 
2

私は同じ問題を持っていますが、

{% templatetag openvariable %} variable {% templatetag closevariable %} 

を使用することは私にとってあまりにも冗長です。私は今書くことができるように

@register.simple_tag 
def mtag(tagContent): 
    return "{{%s}}" % tagContent 

{% mtag "variable" %} 
1

時間のほとんどは私の変数はの一部であるので、私は、同じ問題を持っている私は非常に単純なカスタムテンプレートタグを追加しました翻訳可能な文字列。

{% trans "The ball is {{ color }}" %} 

i18nを提供していない場合でもトランステンプレートタグを使用できます。

47

あなたは簡単に変更することができますタグ:

Mustache.tags = ['[[', ']]']; 
+6

問題への最善のアプローチは、ありがとう! – FRD

+0

Djangoの問題に対処するためにMustacheタグを変更しますか?理想的ではない。過去には多くのオプションはありませんでしたが、Django 1.5は逐語タグをサポートしています。下記の@catの回答を参照してください。 – mynameistechno

+1

逐語的なタグはなぜ優れていますか? – surjikal

20

あなたはジャンゴ1.5以降の使用を使用する場合:

あなたはAppEngineの上ジャンゴ1.2で立ち往生している場合は
{% verbatim %} 
    {{if dying}}Still alive.{{/if}} 
    {% endverbatim %} 

はそのままで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

1

あなたはビルトインmustache.jsが区切りタグを設定し使用することができます口ひげが使用するデフォルトのタグを変更します。すなわち

{{=<% %>=}} 

は今、あなたはこれを行うことができます。

<% variable %> 
関連する問題