2015-05-21 7 views
44

मेरे पास एक फ्लास्क साइट है और मैं कोणीय जावास्क्रिप्ट ढांचे का उपयोग करना चाहता हूं। दुर्भाग्य से, ऐसा लगता है जैसे delimiters ओवरलैप।क्या जिन्जा 2 टेम्पलेट इंजन के साथ कोणीय का उपयोग करना संभव है?

यदि मैं डबल घुंघराले ब्रेसिज़ ({{ expr }}) पर भरोसा करता हूं तो मैं जिन्जा 2 के साथ कोणीय का उपयोग कैसे करूं? क्या यह भी संभव है?

उत्तर

79

आपके पास कुछ विकल्प हैं।

1) कोणीय के लिए सीमांकक अंकन बदलें:

var app = angular.module('Application', []); 

app.config(['$interpolateProvider', function($interpolateProvider) { 
    $interpolateProvider.startSymbol('{a'); 
    $interpolateProvider.endSymbol('a}'); 
}]); 

जो भी आरंभ और अंत प्रतीकों के लिए चुना जाता है नई डिलीमीटर के रूप में कार्य करेगा। इस मामले में, आप {a some_variable a} का उपयोग करके कोणीय को एक चर व्यक्त करेंगे।

इस दृष्टिकोण का केवल एक बार सेट होने और स्पष्ट होने की आवश्यकता है।

2) Jinja2 के लिए delimiter नोटेशन बदलें।

अवहेलना या उपवर्ग Flask.jinja_options.updateFlask उद्देश्य यह है कि आप अपने आवेदन करने के लिए बाध्य पर (प्रासंगिक वार्स: block_start_string, block_end_string, variable_start_string, variable_end_string, comment_start_string, comment_end_string):

jinja_options = app.jinja_options.copy() 

jinja_options.update(dict(
    block_start_string='<%', 
    block_end_string='%>', 
    variable_start_string='%%', 
    variable_end_string='%%', 
    comment_start_string='<#', 
    comment_end_string='#>' 
)) 
app.jinja_options = jinja_options 

वहाँ संवेदनशील डेटा का अधिक खतरा होता है के रूप में सर्वर-साइड से अन-विस्तारित होने पर, मैं सुझाव देता हूं कि किसी भी प्रोजेक्ट पर फ्रंट-एंड (यानी कोणीय) पर सिंटैक्स बदलना, जिसमें आप एकमात्र डेवलपर नहीं हैं।

3) आउटपुट Jinja2 में एक raw block{% raw %} या {% verbatim %} का उपयोग कर:

<ul> 
{% raw %} 
    {% for item in seq %} 
     <li>{{ some_var }}</li> 
    {% endfor %} 
{% endraw %} 
</ul> 

4) का प्रयोग करें Jinja2 टेम्पलेट में घुंघराले ब्रेसिज़ लिखने के लिए:

{{ '{{ some_var }}' }} 

इस में {{ some_var }} के रूप में उत्पादन किया जाएगा एचटीएमएल

दृष्टिकोण # 1 के लिए मेरी प्राथमिकता स्पष्ट है, लेकिन उपरोक्त में से कोई भी काम करेगा।

1

एक और विकल्प भी है: फ्लास्क-त्रिकोण जिंजा 2 में कोणीय templating एकीकृत करते समय रूपों का निर्माण करने में मदद करने के लिए एक विस्तार है। कोणीय (या जिन्जा 2) ब्रैकेट डिलीमीटर बदलने के बजाय, यदि आप अभिव्यक्ति को कोणीय के रूप में प्रस्तुत करना चाहते हैं तो आप जिन्जा 2 को बताने के लिए केवल पहचानकर्ता जोड़ सकते हैं। बस अपने चर के बाद |angular जोड़ें:

<div>{{variable|angular}}</div> 

कौन सा रूप में HTML आउटपुट में रेंडर किया जाएगा:

<div>{{variable}}</div> 

कृपया ध्यान दें कि कुप्पी के त्रिकोण भी कोणीय में इमारत रूपों के लिए (अन्य सुविधाओं के साथ आता शैली), हालांकि मुझे लगता है कि यह जिन्जा 2 में कोणीय templating बनाने के लिए एक मूल्यवान विकल्प हो सकता है और अधिक पठनीय।

संबंधित मुद्दे