विषय पर बढ़ें

टेम्पलेट

te किसी विशेष टेम्पलेट इंजन के लिए कड़ाई से युग्मित नहीं है, लेकिन Ja2 एक उत्कृष्ट विकल्प है।

जिंजा 2 टेम्पलेट

हस्ताक्षर: Jinja2Templates(directory, context_processors=None, **env_options)

  • directory एक स्ट्रिंग, ओएस। पाथलाइक, या स्ट्रिंग्स या ओएस की एक सूची। पाथलाइक एक निर्देशिका पथ का प्रतिनिधित्व करता है।
  • context_processors फ़ंक्शंस की एक सूची जो टेम्पलेट संदर्भ में जोड़ने के लिए एक शब्दकोश लौटाती है।
  • **env_options - अतिरिक्त कीवर्ड तर्क जिंजा 2 वातावरण में पारित किए गए।

te jinja2 कॉन्फ़िगरेशन करने का एक आसान तरीका प्रदान करता है। यह वही हो सकता है जो आप डिफ़ॉल्ट रूप से उपयोग करना चाहते हैं।

te.से आयात
स्टारलेट से। रूटिंग इम्पोर्ट रूट, माउंट
से te.plआयात Ja2आयात
te.staticसे Staticआयात करें


टेम्पलेट = Ja2(निर्देशिका = 'टेम्पलेट')

Ac def मुखपृष्ठ (अनुरोध):
    वापसी टेम्पलेट। टेम्पलेट प्रतिक्रिया (अनुरोध, 'index.html ')

मार्ग = [
    मार्ग ('/', समापन बिंदु = मुखपृष्ठ),
    माउंट ('/ स्थैतिक', स्टैटिक फाइलें (directory = 'static'), नाम = 'स्थिर')
]

ऐप = स्टारलेट (डिबग = ट्रू, रूट्स = रूट)

कृपया ध्यान दें कि आने वाली request उदाहरण को टेम्पलेट संदर्भ के हिस्से के रूप में शामिल किया जाना चाहिए।

Ja2 टेम्पलेट संदर्भ में स्वचालित रूप से एक शामिल होगा url_for फ़ंक्शन, इसलिए हम एप्लिकेशन के भीतर अन्य पृष्ठों के लिए सही ढंग से हाइपरलिंक कर सकते हैं।

उदाहरण के लिए, हम अपने टेम्पलेट के भीतर से स्थिर फ़ाइलों से लिंक कर सकते हैं:

<link href="{{ url_for('static', path='/css/bootstrap.min.css') }}" rel="stylesheet" />

यदि आप कस्टम फ़िल्टर का उपयोग करना चाहते हैं, तो आपको उन्हें अपडेट करना होगा Jinja2Templates का env विशेषता:

से आयात
से te.plआयात Ja2आयात

Dचिह्नित _ फ़िल्टर (पाठ):
    वापसी सामान्य चिह्न (पाठ)

टेम्पलेट = Ja2(निर्देशिका = 'टेम्पलेट')
टेम्पलेट्स .env.फिल्टर ['चिह्नित'] = चिह्नित_फिल्टर

एक कस्टम ja2 का उपयोग करें। पर्यावरण उदाहरण

te एक पूर्व-कॉन्फ़िगर को भी स्वीकार करता है jinja2.Environment उदाहरण।

आयात जिंजा 2
से te.plआयात Ja2आयात

एनव = जिंजा 2। पर्यावरण (...)
टेम्पलेट = जिंजा 2 टेम्प्लेट (env = env)

संदर्भ हैंडलर

संदर्भ हैंडलर एक फ़ंक्शन है जो टेम्पलेट संदर्भ में शामिल करने के लिए एक शब्दकोश लौटाता है। प्रत्येक फ़ंक्शन केवल एक तर्क,request लेता है, और संदर्भ में जोड़े जाने के लिए एक शब्दकोश वापस करना होगा।

टेम्पलेट हैंडलर के लिए एक सामान्य उपयोग का मामला साझा चर का उपयोग करके टेम्पलेट संदर्भ का विस्तार करना है।

टाइपिंग आयात करें
स्टारलेट से। अनुरोध आयात अनुरोध

डेफ ऐप _ संदर्भ (request: Request) - > टाइपिंग। डिक्ट [स्ट्र, टाइपिंग। कोई]:
    वापसी {'app': request.app}

पंजीकरण संदर्भ टेम्पलेट

संदर्भ हैंडलर को पास करें Jinja2Templates वर्ग context_processors पैरामीटर।

टाइपिंग आयात करें

स्टारलेट से। अनुरोध आयात अनुरोध
से te.plआयात Ja2आयात

डेफ ऐप _ संदर्भ (request: Request) - > टाइपिंग। डिक्ट [स्ट्र, टाइपिंग। कोई]:
    वापसी {'app': request.app}

टेम्पलेट्स = जिंजा 2 टेम्पलेट्स (
    निर्देशिका = 'टेम्पलेट', संदर्भ _ प्रोसेसर = [ऐप _ संदर्भ]
)

!!! संदर्भ हैंडलर के रूप में सूचना, अतुल्यकालिक कार्य समर्थित नहीं हैं।

परीक्षण टेम्पलेट प्रतिक्रिया

परीक्षण क्लाइंट पक्ष का उपयोग करते समय, टेम्पलेट प्रतिक्रिया शामिल है .template और .context विशेषता।

से te.आयात Testent


डेफ टेस्ट_होमपेज ():
    क्लाइंट = टेस्टक्लाइंट (ऐप)
    प्रतिक्रिया = ग्राहक ("/")
    प्रतिक्रिया दें। status_code == 200
    response.template.name = = 'index.html'
    प्रतिक्रिया में "अनुरोध" का दावा करें

Ja2 वातावरण को अनुकूलित करना

Jinja2Templates जिंजा 2 स्वीकार करें Environment सभी समर्थित विकल्प। यह te के निर्माण की अनुमति देगा Environment अधिक नियंत्रण के लिए उदाहरण।

के लिए Environment उपलब्ध विकल्पों की एक सूची, आप यहां Ja2 प्रलेखन देख सकते हैं

से te.plआयात Ja2आयात


टेम्पलेट्स = Ja2(निर्देशिका = 'टेम्पलेट्स', ऑटोएस्केप = गलत, ऑटो _ re= सच)

अतुल्यकालिक टेम्पलेट प्रतिपादन

Ja2 अतुल्यकालिक टेम्पलेट प्रतिपादन का समर्थन करता है, लेकिन सामान्य तौर पर, हम अनुशंसा करते हैं कि आप अपने टेम्पलेट्स में डेटाबेस लुकअप या अन्य I / O संचालन को कॉल करने के लिए तर्क शामिल करने से बचें।

इसके विपरीत, हम अनुशंसा करते हैं कि आप यह सुनिश्चित करें कि आपके समापन बिंदु सभी I / O का प्रदर्शन करते हैं, उदाहरण के लिए, किसी भी डेटाबेस प्रश्नों का कठोरता से मूल्यांकन करके और संदर्भ में अंतिम परिणाम सहित।