Ale*_*x T 22 django django-templates
我想为我的布局模板添加一些灵活性,但我找不到任何方法.
我正在寻找一种extend带有变量的布局模板的方法,即在模板树中传递变量,而不是向下传递.
# views.py
def my_view_func(request):
return render(request, "child.html")
Run Code Online (Sandbox Code Playgroud)
# child.html
{% extends 'layout.html' with show_sidebar=True sidebar_width_class="width_4" %}
<div>Templates stuff here</div>
Run Code Online (Sandbox Code Playgroud)
# layout.html
{% if show_sidebar %}
<div class="{{ sidebar_width_class }}">
{% block sidebar %}{% endblock %}
</div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
我必须维护四个模板,但几行代码不同.例如,我有两个模板,它们通过侧边栏宽度类相互不同.难道我做错了什么?
xpy*_*xpy 12
我怀疑这block是你首先要寻找的东西.
在基本模板中形成块,如下所示:
{% block sidebar_wrapper %}
{% if sidebar %}
<div class="width{{sidebar_width}}">
{% block sidebar %}{% endblock %}
</div>
{% endif %}
{% endblock sidebar_wrapper%}
Run Code Online (Sandbox Code Playgroud)
在您的孩子模板上:
{% extends 'layout.html' %}
{% block sidebar_wrapper %}
{% with sidebar=True sidebar_width=4 %}
{{ block.super }}
{% endwith%}
{% endblock sidebar_wrapper%}
Run Code Online (Sandbox Code Playgroud)
你需要的是一个包含模板标签.您可以在另一个模板中包含模板,并使用特定上下文进行渲染.
{% include 'layout.html' with sidebar=True sidebar_width=4 %}
Run Code Online (Sandbox Code Playgroud)
在这里查看文档:https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#include
| 归档时间: |
|
| 查看次数: |
6477 次 |
| 最近记录: |