Jinja2

2012-08-28 14 views
7
में किसी मैक्रो को चर पासिंग

मैं कुछ छोटे मैक्रो कि मैं पाठ लाइन और इसके लिए लेबल प्रदर्शित करने के लिए उपयोग कर रहा हूँ बना दिया है:Jinja2

{% macro input(name, text, help_text, value="", input_type) -%} 
    <label for="id_{{name}}">{{text}}<span class="right">{{help_text}}</span></label> 
    <input id="id_{{name}}" name="{{name}}" value="{{value}}" type="{{input_type}}" /> 
{{%- endmacro %} 

समस्या है जब मैं jinja2 मैक्रो फोन:

{{input("username", "Korisničko ime:", "Pomoć", {{value_username}}, "text")} 

जब मैं पैरामीटर के रूप में {{value_username}} के साथ इनपुट कॉल करता हूं, तो मैं इसे काम नहीं कर सकता, मुझे हमेशा एक त्रुटि मिलती है।

क्या आपको कोई समाधान पता है कि मैं {{value_username}} पैरामीटर के रूप में कैसे कॉल कर सकता हूं।

उत्तर

11

मेरा मानना ​​है कि

{{ input("username", "Korisničko ime:", "Pomoć", value_username, "text") }} 

+4

धन्यवाद, यह फ़िल्टर के साथ भी बहुत अच्छा काम करता है। लेकिन, यदि अन्य तारों को चर के लिए संलग्न या प्रीपेड किया गया है, (उदाहरण के लिए => "हैलो {{value_username | capitalize}}, सुप्रभात!"), क्या इस तरह की स्ट्रिंग को मैक्रो में पास करना संभव है? मैं पूरी तारों को एक चर के रूप में बनाने से बचने की कोशिश कर रहा हूं, क्योंकि कई प्रीपेड हैं और संयोजन जोड़ते हैं। –

2

काम करना चाहिए हालांकि एम्मेट जे बटलर एक जवाब प्रदान की गई है, वहाँ मैक्रो मापदंडों के आदेश देने के साथ एक छोटी सी nitpick है। आप वर्तमान में निम्न हस्ताक्षर का उपयोग करें:

input(name, text, help_text, value="", input_type) 

तुम हमेशा सभी अन्य आवश्यक तर्क के बाद डिफ़ॉल्ट मान युक्त, इसलिए इस में आदेश को बदलने तर्क रखना चाहिए:

input(name, text, help_text, input_type, value="") 

अब जब के रूप में चर के साथ मैक्रो बुला तर्क, आपको {{ }} के साथ अपने चर को चारों ओर घूमने की आवश्यकता नहीं है क्योंकि आप पहले ही {% ... %} के अंदर हैं।