24

के लिए एक ही वाक्य रचना मैं mustache.js के लिए HTML में HTML टेम्पलेट तस्करी करने की कोशिश का उपयोग करें, लेकिन Django टेम्पलेट इंजन सभी प्लेसहोल्डर कि उत्पादन होना चाहिए हटाने सामने के अंतDjango और मूंछें टेम्पलेट

के रूप में-है ,

<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 (अस्थायी उपयोग करके एचटीएमएल उत्पन्न:

टेम्पलेट इस तरह से एचटीएमएल में शामिल है डेटा);

मैं एक स्थिर फ़ाइल में सभी टेम्पलेट डाल सकता है और CDN से सेवा करते हैं, लेकिन फिर यह जहां टेम्पलेट अंतर्गत आता है, और कम से कम एक अतिरिक्त http अनुरोध ट्रैक करने के लिए मुश्किल होगा।

+0

@Alasdair यह करने के लिए एक बेहतर तरीका के लिए मेरा उत्तर देखें। 'Templatetag' समाधान रास्ता भी verbose है। – surjikal

+0

आप अपनी परियोजना में वर्बैटिम टैग का उपयोग कर सकते हैं। [यह लिंक] देखें (https://code.djangoproject.com/ticket/16318)। –

उत्तर

21

आप {% templatetag %} templatetag का उपयोग उन पात्रों को मुद्रित करने के लिए कर सकते हैं जो आमतौर पर Django द्वारा संसाधित किए जाएंगे।

अपने 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" %} 

Django -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 }}" %} 

आप ट्रांस templatetag का उपयोग भले ही आप i18n प्रस्ताव नहीं कर सकते हैं।

47

आप बस को बदल सकते हैं टैग:

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

जाने का तरीका है समस्या का सबसे अच्छा तरीका, धन्यवाद! – FRD

+0

एक Django मुद्दे से निपटने के लिए मूंछ टैग बदल रहा है? आदर्श नहीं। अतीत में बहुत अधिक विकल्प नहीं थे, लेकिन Django 1.5 अब वर्बैटिम टैग का समर्थन करता है। नीचे @cat द्वारा जवाब देखें। – mynameistechno

+1

वर्बैटिम टैग बेहतर क्यों है? – surjikal

20

आप Django 1.5 और नए प्रयोग का उपयोग करते हैं:

{% verbatim %} 
    {{if dying}}Still alive.{{/if}} 
    {% endverbatim %} 

आप ऐप्लिकेशन इंजन पर Django 1.2 के साथ फंस रहे हैं, तो शब्दशः साथ 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)) 

आपकी फ़ाइल में (पायथन 2।7, एचडीआर) का उपयोग करें:

from django.template import Context, Template 
import django 
django.template.add_to_builtins('utilities.verbatim_template_tag') 

html = Template(blob).render(Context(kwdict)) 

आपकी फ़ाइल (अजगर 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 %> 
संबंधित मुद्दे