如何在Django模板的“带有模板标签”中设置Django渲染块值?

时间:2019-07-26 10:03:24

标签: django django-templates

我正在基于Django应用程序中的不同视图显示动态标题,我想在base.html文件的3个meta标签上设置相同的标题, 在所有其他模板中得到扩展。

当我在标题变量上设置一个字符串时,这可以正常工作:

{% with title='TEST'%}
    <title>{% block page-title %}{% block title %}{% endblock %} | {{ agency.name }}{% endblock %}</title>
    <meta property="og:title" content="{{title}}" />
    <meta name="twitter:title" content="{{title}}" />
{% endwith %}

我想将动态标题设置为:

{% with title="{% block page-title %}{% block title %}{% endblock %} | {{agency.name }}{% endblock %}"%}
    <title>{{title}}</title>
    <meta property="og:title" content="{{title}}" />
    <meta name="twitter:title" content="{{title}}" />
{% endwith %}

但是当我这样做的时候,我没有得到title变量中的值:

如何将其设置为带有模板标签的变量,然后在其他标签中重复使用该变量? 还是有其他方法可以做到?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用block assignment功能:

{% with %}
    {% set title %}{% block page-title %}{% block title %}{% endblock %} | {{ agency.name }}{% endblock %}{% endset %}
    <title>{{ title }}</title>
    <meta property="og:title" content="{{title}}" />
    <meta name="twitter:title" content="{{title}}" />
{% endwith %}