2012-06-08 14 views
5

में टैग शामिल है I Django टेम्पलेट सिस्टम के बहुत अजीब व्यवहार में भाग गया है। के बाद से वहाँ कोई परिष्करण स्थिति है,सशर्त में Django

{% include "test.html" %} 
बेशक

, इस तरह के टेम्पलेट प्रदान करने की कोई संभावना नहीं है: मैं एक टेम्पलेट फ़ाइल, अर्थात् test.html, जो रिकर्सिवली ही शामिल है। ठीक है, के निम्नलिखित की कोशिश करते हैं:

{% if test_false %}{% include "test.html" %}{% endif %}, 

जहां test_false एक चर टेम्पलेट और पारित False के बराबर है।

एक को उम्मीद है कि यह सिर्फ कुछ भी शामिल नहीं होगा, लेकिन यह करता है:

RuntimeError at /test/ 
maximum recursion depth exceeded while calling a Python object 

मैं इसे नहीं मिलता है। टैग शामिल करें वर्तमान संदर्भ से तर्क ले सकते हैं, इसलिए मुझे संदेह है कि इसे पृष्ठ के किसी अन्य भाग से पहले निष्पादित किया जाता है। फिर यह हालत टैग को अनदेखा क्यों करता है?

उत्तर

6

Django में अनुकूलन है जिसमें संकलन में स्थिरांक द्वारा दिए गए टेम्पलेट शामिल हैं।

चर करने के लिए टेम्पलेट का

सेट नाम और है कि रास्ते में यह शामिल हैं:

{% include test_template %} 

Django यह अनुकूलन है और अपने कोड काम करना चाहिए का उपयोग करने में सक्षम नहीं होगा।

-1

तरह थॉमस कहते हैं, यदि पथ सहित टेम्पलेट में एक निरंतर स्ट्रिंग के रूप में परिभाषित किया गया है Django केवल इस अनुकूलन कर सकते हैं - तो की तरह:

{% include "test.html" %} 

लेकिन मैं नहीं बल्कि में टेम्पलेट पथ डाल करने के लिए नहीं होगा पायथन कोड से संदर्भ।

तो यहाँ

एक ही परिणाम प्राप्त करने के एक से थोड़ा अधिक आत्म निहित तरीका है - लपेट The A with में शामिल हैं:

{% with "test.html" as path %} 
    {% include path %} 
{% endwith %} 
संबंधित मुद्दे