【问题标题】:How to handle variables in templates inheritance如何处理模板继承中的变量
【发布时间】:2010-10-24 01:27:43
【问题描述】:

我只想在子模板中定义body标签的id属性。第一个解决方案完美运行:

base.html:

[body{% block bodyid %}{% endblock %}]

child.html:

{% block bodyid %} id="myId"{% endblock %}

简单又酷!但我不喜欢在每个子模板中都指向 id="myId" 。我只想将值“myId”发送到父模板,并将其放入 id="...."。所以,我发明了这个方法:

base.html:

[body{% block bodyid %} id={{ bodyid }}{% endblock %}]

child.html:

{% block bodyid %}
    {% with 'myId' as bodyid %}
        {{ block.super }}
    {% endwith %}
{% endblock %}

但是比较第一个解决方案既可怕又乏味。有什么好的方法可以做到这一点吗?

这个问题比管理bodyId更深。我想,我尝试通过标准django模板的继承来寻找和组织子模板系统。

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    在基础模板中:

    <body id="{% block bodyid %}{% endblock %}">
    

    在子模板中:

    {% block bodyid %}myId{% endblock %}
    

    如果我正确理解您的问题,这应该足以实现您想要的;仅将实际 ID (myId) 发送到基本模板。

    【讨论】:

    • 这是我一直使用的方法
    • 年份,但是当我没有在 child.html 中定义 {{ bodyId }} 时,我不想留空 id=""
    • 我会像这样添加一个默认 ID:
    【解决方案2】:

    如果您愿意,可以通过您的代码进行设置 - 以便您的 id 成为您的上下文对象的一部分,因此不需要在子模板中输入,只需在调用它们的视图中输入。

    然后您可以告诉您的基本模板从上下文对象中获取 id,或者直接使用模板语法:

    <body id="{{ body_id }}">
    

    这里当然是个人喜好,这取决于您的模板和视图的结构,但我会这样做。

    【讨论】:

    • 年份,但我不想在视图或 child.html 中定义 {{ body_id }} 时留空 id=""
    猜你喜欢
    • 2016-07-15
    • 2023-03-27
    • 2011-09-21
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 2010-11-09
    • 1970-01-01
    相关资源
    最近更新 更多