2011-01-12 11 views
14

मैं अपने Django टेम्पलेट में {% include page.html %} टैग का उपयोग करना चाहता हूं, और गतिशील रूप से page.html का मान बनाना चाहता हूं।Django: गतिशील रूप से {% शामिल%} टैग का निर्माण मूल्य?

क्या Django में ऐसा करने का कोई तरीका है?

{% include page_{{mode}}.html %} 

धन्यवाद:

यहाँ एक स्यूडोकोड उदाहरण है!

उत्तर

19

डॉक्स से:

टेम्पलेट का नाम या तो एक चर या एक हार्ड-कोडेड (उद्धृत) स्ट्रिंग, या तो एकल या डबल उद्धरण में हो सकता है।

तो अपने दृश्य में एक चर का निर्माण करें और इसे संदर्भ के माध्यम से अपने टेम्पलेट में पास करें, 'मोड टेम्पलेट' के रूप में कहें: "पृष्ठ _" + मोड + "। Html"। तो फिर कार्य करें:

{% include modeTemplate %} 

'मोड' मान लिया जाये कि आपके विचार कोड में एक अजगर चर रहा है।

3

आप with टैग और add फिल्टर, अतः यहाँ का जवाब देखने का उपयोग कर दोनों तार और सही अपने टेम्पलेट में चर जोड़ सकते हैं: https://stackoverflow.com/a/4524851/1444978

6

मुझे लगता है कि goliney एक बेहतर जवाब here

प्रदान की सारांश में:

आप एक परिवर्तनीय और 'add' filter पर एक गतिशील रूप से निर्मित टेम्पलेट नाम असाइन करने के लिए django के अंतर्निहित 'with' template tag को जोड़ सकते हैं और एक टेम्पलेट नाम गतिशील रूप से बनाने के लिए।

उदाहरण के लिए:

{% with template_name='page_'|add:mode|add:".html" %} 
    {% include ""|add:template_name %} 
{% endwith %} 
संबंधित मुद्दे