2011-09-25 4 views
14

मैं अपनी साइट पर using Jinja हूं और मुझे यह पसंद है।क्या जिन्जा टेम्पलेट्स में इनलाइन कोड की अनुमति है?

मुझे एक साधारण आवश्यकता में आ गया है। आज की तारीख कैसे प्रदर्शित करें? क्या जिन्जा टेम्पलेट में कुछ पायथन कोड को रेखांकित करने का कोई तरीका है?

import datetime 
now = datetime.datetime.utcnow() 
print now.strftime("%Y-%m-%d %H:%M") 

This article says no, लेकिन एक मैक्रो या फिल्टर का उपयोग कर पता चलता है?

वास्तव में? क्या हम उन सभी का सहारा लेना चाहिए? ठीक है, इस मामले में यह कैसा दिखता है?

उत्तर

11

नहीं, पाइथन को जिन्जा में इनलाइन करने का कोई तरीका नहीं है। हालांकि, आप संरचनाओं में जोड़ सकते हैं कि जिन्जा टेम्पलेट इंजन के Environment या सभी टेम्पलेट्स के लिए global namespace को विस्तारित करके जानता है। वैकल्पिक रूप से, आप एक फ़िल्टर जोड़ सकते हैं जो आपको डेटाटाइम ऑब्जेक्ट्स प्रारूपित करने देता है।

फ्लास्क Jinja2 पर्यावरण को app.jinja_env पर संग्रहीत करता है। आप या तो सीधे इस शब्दकोश में जोड़कर, या @app.context_processor सजावट का उपयोग करके पर्यावरण में नए संदर्भ को इंजेक्ट कर सकते हैं।

जो भी रास्ता आप चुनते हैं, यह आपके द्वारा अनुरोध किए जाने से पहले, आवेदन करने की आवश्यकता होने पर किया जाना चाहिए। (फ़िल्टर को सेट करने के तरीके के कुछ goodexamples के लिए वेबसाइट के स्निपेट अनुभाग देखें - the docs में वैश्विक चर में जोड़ने का एक अच्छा उदाहरण है)।

3

आप global variables में जोड़ सकते हैं जिसे जिन्जा टेम्पलेट्स से एक्सेस किया जा सकता है। आप वहां अपनी खुद की फ़ंक्शन परिभाषाएं डाल सकते हैं, जो आपको चाहिए।