2010-12-01 9 views
12

का उपयोग कर block.super मैं 3 Django टेम्पलेट्स:संलग्न Django टेम्पलेट में साइट <title> को

base.html

<title>{% block title %} SITE NAME {% endblock %}</title> 

default.html

{% extends "base.html" %} 
{% block title %} {{ block.super }} - SECTION NAME {% endblock %} 

मुख्य .html

{% extends "default.html" %} 
{% block title %} {{ block.super }} {% endblock %} 

मैं टेम्पलेट में SITE NAME प्राप्त करना चाहते हैं main.html अर्थात माता पिता ब्लॉक के माता पिता की सामग्री।

{{ block.super.super }} 

क्या यह संभव है?

उत्तर

3

मुझे नहीं लगता कि यह संभव है। बस आपकी विशिष्ट समस्या के लिए मुझे लगता है कि यदि आप ब्लॉक से पहले साइट का नाम रखेंगे, और साइट नाम पर कुछ जोड़ने के लिए ब्लॉक का उपयोग करें तो इसे हल किया जा सकता है।

नहीं तो आप अपने settings.py में SITE_NAME को परिभाषित करने और

from django.conf import settings 
def site_name(request): 
    return {'SITE_NAME': settings.SITE_NAME} 
ताकि आप {{ SITE_NAME }} अपने टेम्पलेट में उपयोग कर सकते हैं

की तरह एक संदर्भ प्रोसेसर हो सकता था - यह मतलब सकता है, क्योंकि साइट का नाम भी अन्य स्थानों पर usefule हो सकता है ...

5

नोट, Django 1.2.3 पहले से ही आप जो चाहते हैं वह कर रहा है। मान लें कि SITE_NAME को संदर्भ_प्रप्रोसेसर के माध्यम से प्रकट किया गया है जैसे कि lzerscience illustrates, block.super को विरासत की सभी परतों के माध्यम से इसका खुलासा करना चाहिए।

main.html

{% extends "default.html" %} 
{% block title %} {{ block.super }} - MAIN{% endblock %} 

शीर्षक "SITE NAME मुख्य - - SECTION NAME" को प्रदर्शित करता है वह मेरे लिए।

0

Django 1.6.6

{{ block.super.super }} - संभव

मैं अब कोशिश - काम :) लेकिन आधिकारिक तौर पर नहीं ...

संबंधित मुद्दे