मैं भी अपने टेम्पलेट फ़ाइलों में एक दोहराया {% ब्लॉक%} के लिए एक ही जरूरत भर में आए हैं। मुद्दा यह है कि मैं एक Django सशर्त के किसी भी मामले में एक Django {% ब्लॉक%} का उपयोग करना चाहता हूं, और मैं चाहता हूं कि बाद की फ़ाइलों द्वारा {% block%} को वर्तमान फ़ाइल का विस्तार करने वाली फ़ाइलों से अधिक-योग्य बनाया जा सके। (इसलिए इस मामले में, मैं जो चाहता हूं वह निश्चित रूप से एक चर की तुलना में अधिक ब्लॉक है क्योंकि मैं तकनीकी रूप से इसे फिर से उपयोग नहीं कर रहा हूं, यह सिर्फ एक सशर्त के दोनों छोर पर दिखाई देता है।
समस्या:
निम्नलिखित Django टेम्प्लेट कोड के परिणामस्वरूप एक टेम्पलेट सिंटैक्स त्रुटि होगी, लेकिन मुझे लगता है कि यह एक मान्य "चाहता है" है कि एक परिभाषित {% ब्लॉक%} को फिर से एक सशर्त में उपयोग किया जाता है (IE, क्यों बीएचओएच के लिए सिंटैक्स को सत्यापित करने वाला Django पार्सर समाप्त होता है एक शर्त के अनुसार, क्या यह केवल TRUTHY शर्त को मान्य नहीं करना चाहिए? '
# This example shows a {{ DEBUG }} conditional that loads
# Uncompressed JavaScript files if TRUE
# and loads Asynchronous minified JavaScript files if FALSE.
# BASE.html
{% if DEBUG %}
<script src="{{MEDIA_URL}}js/flatfile.1.js"></script>
<script src="{{MEDIA_URL}}js/flatfile.2.js"></script>
<script src="{{MEDIA_URL}}js/flatfile.3.js"></script>
<script type="text/javascript">
{% block page_js %}
var page = new $site.Page();
{% endblock page_js %}
</script>
{% else %}
<script type="text/javascript">
// load in the PRODUCTION VERSION of the site
// minified and asynchronosly loaded
yepnope([
{
load : '{MEDIA_URL}}js/flatfiles.min.js',
wait : true,
complete : function() {
{% block page_js %} // NOTE THE PAGE_JS BLOCK
var page = new $site.Page();
{% endblock page_js %}
}
}
)];
</script>
{% endif %}
# ABOUT.html
{% extends 'pages/base.html' %}
{% block page_js %}
var page = new $site.Page.About();
{% endblock page_js %}
समाधान:
सशर्त रूप से {% ब्लॉक%} को एक से अधिक बार सम्मिलित करने के लिए आप {% शामिल%} का उपयोग कर सकते हैं। यह मेरे लिए काम किया क्योंकि Django सिंटैक्स चेकर में केवल TRUTHY {% में%} शामिल हैं। नीचे देखें रिजल्ट:
# partials/page.js
{% block page_js %}
var page = new $site.Page();
{% endblock %}
# base.html
{% if DEBUG %}
<script src="{{MEDIA_URL}}js/flatfile.1.js"></script>
<script src="{{MEDIA_URL}}js/flatfile.2.js"></script>
<script src="{{MEDIA_URL}}js/flatfile.3.js"></script>
<script type="text/javascript">
{% include 'partials/page_js.html' %}
</script>
{% else %}
<script type="text/javascript">
yepnope([
{
load : '{MEDIA_URL}}js/flatfiles.min.js',
wait : true,
complete : function() {
{% include 'partials/page_js.html' %}
}
}
)];
</script>
{% endif %}