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

San*_*4ez 12 django block super

我有3个Django模板:

base.html文件

<title>{% block title %} SITE NAME {% endblock %}</title>
Run Code Online (Sandbox Code Playgroud)

default.html中

{% extends "base.html" %}
{% block title %} {{ block.super }} - SECTION NAME {% endblock %}
Run Code Online (Sandbox Code Playgroud)

main.html中

{% extends "default.html" %}
{% block title %} {{ block.super }} {% endblock %}
Run Code Online (Sandbox Code Playgroud)

我想在模板main.html中获取SITE NAME,即父块的父级内容.就像是

{{ block.super.super }}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Cer*_*rin 6

注意,Django 1.2.3似乎已经做了你想要的.假设SITE_NAME通过像lzerscience说明的context_preprocessor公开,block.super应该通过所有继承层公开它.

main.html中

{% extends "default.html" %}
{% block title %} {{ block.super }} - MAIN{% endblock %}
Run Code Online (Sandbox Code Playgroud)

这为我显示标题"网站名称 - 部分名称 - 主要".


Ber*_*ant 3

我认为这是不可能的。对于您的具体问题,我想如果您将站点名称放在块之前,并使用块只是将一些内容附加到站点名称,则可以解决它。

SITE_NAME否则,您可以在您的中定义settings.py并拥有一个上下文处理器,例如

from django.conf import settings
def site_name(request):
    return {'SITE_NAME': settings.SITE_NAME}
Run Code Online (Sandbox Code Playgroud)

这样您就可以{{ SITE_NAME }}在模板中使用 - 这可能是有意义的,因为站点名称在其他地方也可能有用......