有两个用户后台管理页面,一个用于员工管理订单,企业。一个用于管理自己的订单或用户中心的normaluser。所以有两个url路径:/ staff_bg / / user_bg / 但它们使用相同的基本模板,唯一不同的是标题选项卡不相同。例如:
user_header.html
{% extends "core/base.html" %}
<header>
<ul>
<li>your orders</li>
</ul>
</header>
staff_header.html
{% extends "core/base.html" %}
<header>
<ul>
<li>enterprise</li>
</ul>
</header>
然后: user_realted.html:
{% extends "core/user_header.html" %} # focus here
{% block body %}
# something
{% endblock %}
然后: staff_related.html
{% extends "core/staff_header.html" %} # focus here
{% block body %}
# something
{% endblock %}
我的解决方案: 创建core / middle.html:
{% extends the_template_name %}
然后 user_realted.html:
{% extends "core/middle.html" %} # focus here
{% block body %}
# something
{% endblock %}
编写自定义模板处理器的一种方法,基于一个request.path将不同的the_template_name(“cms / user_header.html”或“core / staff_header.html”)传递给middle.html,但我认为它很脏, 如果代码错误,也许普通用户可以看到员工标签。
另一种方式: 在每个视图中将不同的the_template_name传递给middle.html。当然,它会改变已经写过的每一个观点。