使用block.super </title>附加到Django模板中的站点<title>

时间:2010-12-01 10:29:54

标签: django block super

我有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 }}

这可能吗?

3 个答案:

答案 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 }} - 可能

我现在尝试 - 工作:) 但不是正式......