我有3个Django模板:
base.html文件
<title>{% block title %} SITE NAME {% endblock %}</title>
default.html中
{% extends "base.html" %}
{% block title %} {{ block.super }} - SECTION NAME {% endblock %}
main.html中
{% extends "default.html" %}
{% block title %} {{ block.super }} {% endblock %}
我想在模板 main.html 中获取SITE NAME,即父块的父级内容。像
这样的东西{{ block.super.super }}
这可能吗?
答案 0 :(得分:6)
注意,Django 1.2.3似乎已经做了你想要的。假设SITE_NAME是通过像lzerscience说明的context_preprocessor公开的,那么block.super应该通过所有继承层公开它。
<强> main.html中强>
{% extends "default.html" %}
{% block title %} {{ block.super }} - MAIN{% endblock %}
为我显示标题“SITE NAME - SECTION NAME - MAIN”。
答案 1 :(得分:3)
我不认为这是可能的。仅针对您的具体问题,我想如果您将站点名称放在块之前,可以解决这个问题,并使用该块只是为了在站点名称上附加内容。
否则,您可以在SITE_NAME
中定义settings.py
,并拥有类似
from django.conf import settings
def site_name(request):
return {'SITE_NAME': settings.SITE_NAME}
以便您可以在模板中使用{{ SITE_NAME }}
- 这可能有意义,因为网站名称在其他地方也可能是usefule ...
答案 2 :(得分:0)
Django 1.6.6
{{ block.super.super }}
- 可能
我现在尝试 - 工作:) 但不是正式......