我想给我的布局模板增加一些灵活性,但我找不到任何方法.

我正在寻找一种用变量来extend布局模板的方法,即在模板树中向上传递变量,而不是向下传递变量.

# views.py
def my_view_func(request):
    return render(request, "child.html")

# child.html
{% extends 'layout.html' with show_sidebar=True sidebar_width_class="width_4" %}

<div>Templates stuff here</div>

# layout.html
{% if show_sidebar %}
    <div class="{{ sidebar_width_class }}">
        {% block sidebar %}{% endblock %}
    </div>
{% endif %}

我必须维护四个模板,并在几行代码中有所不同.例如,我有两个侧栏宽度类不同的模板.我做错什么了吗?

推荐答案

我怀疑block是你首先要找的.

在基本模板内形成您的挡路,如下所示:

{% block sidebar_wrapper %}
    {% if sidebar %}
    <div class="width{{sidebar_width}}">
        {% block sidebar %}{% endblock %}
    </div>
    {% endif %}
{% endblock sidebar_wrapper%}

在您的子模板上:

{% extends 'layout.html' %}
{% block sidebar_wrapper %}
    {% with sidebar=True sidebar_width=4 %}
        {{ block.super }}
    {% endwith%}
{% endblock sidebar_wrapper%}

Django相关问答推荐

使用FormWizard将信息从视图传递到表单

DRF中是否有有效的更新有序数据的算法?

Django为不同应用程序发出信号

Django prefetch_related 与 3 个不直接相关的模型

Django 嵌套事务 - with transaction.atomic()

Django PositiveIntegerField 中的 0 值?

Django 从 url 保存图像并与 ImageField 连接

未捕获的类型错误:$(...).datepicker is not a function(anonymous function)

如何运行克隆的 Django 元素?

如何从 django 自定义中间件类返回 rest_framework.response 对象?

将网络测功机添加到 Heroku django 应用程序时如何克服Coudn't find that formation错误?

ManyRelatedManager 不可迭代

在 Django 中提供大文件(高负载)

UnicodeDecodeError:asciicodec can't decode byte 0xe0 in position 0: ordinal not in range(128)

如何在 Django 中向 ModelForm 添加外键字段?

在 Django 中获取下一个和上一个对象

如何在 Django 中执行批量插入?

Table doesn't exist表不存在

Django 自定义用户邮箱帐户验证

Django将整数模型字段的范围设置为约束