jinja2

2012-06-15 22 views
8

में शब्दकोश विशेषताओं को संशोधित करना मान लीजिए कि मैं अपने jinja2 टेम्पलेट में एक शब्दकोश पास करता हूं।
ध्यान में रखते हुए मैं जैसेjinja2

d = {} 
#set other template stuff into d 
get_params['cri'] = 'time' 
get_params['order'] = 'asc' 
d['get_params'] = get_params 
return d 

कुछ मैं get_params की चाबियों का मूल्य बदलने की जरूरत है टेम्पलेट में है। तर्कसंगत बात

{% set get_params.cri='src' %} 

एक त्रुटि के साथ विफल

TemplateSyntaxError: expected token '=', got '.' 

मेरा प्रश्न कैसे मैं jinja2 में मानों एक शब्दकोश में पारित कर दिया संपादित कर सकता है

(यह सवाल here कहा गया है, लेकिन मैं उत्तर भ्रमित करने का पता लगाएं और यह केवल विलय करने वाले हिस्से का जवाब देता है)

उत्तर संपादित करें:

जिनजा 2 'डू' एक्सटेंशन प्रदान करता है। पिरामिड है कि एक्सटेंशन जोड़ने के लिए, विचार यह है कि आप jinja2 में कार्य प्रदर्शन नहीं कर सकते __init__.py फ़ाइल

#This line is alreadythere 
config.include('pyramid_jinja2') 
#Add this line 
config.add_jinja2_extension('jinja2.ext.do') 

में निम्न कार्य टेम्पलेट

{% do get_params.update({'cri':'src'}) %} 

उत्तर

4

में। हालांकि आप क्या कर सकते हैं (जैसा कि आपने लिंक किया गया अन्य पोस्ट में सुझाया गया है) एक ब्लॉक ब्लॉक को कॉल करना और अपडेट ऑपरेशन करना है (अद्यतन पायथन में किसी भी निर्देश का एक तरीका है; http://docs.python.org/library/stdtypes.html#dict.update)।

+0

मुझे अपडेट हिस्सा मिला (वास्तव में इसे {{}} टैग में कर रहा है लेकिन वह प्रिंट नहीं करता है)। मैं {% do%} ब्लॉक का उपयोग कैसे करूं? कोड की सराहना की जाएगी। विशेष रूप से पिरामिड – RedBaron

+1

से जिन्जा 2 एक्सटेंशन कैसे सक्षम करें स्क्रैच करें ... इसे करने में कामयाब रहा – RedBaron