我试图不在不同的模板上两次编写相同的代码。改变一些事情真的很麻烦。
所以,当我转到网页的某个部分时,我想显示一个侧边菜单。这个侧面菜单假设在几个模板上。与index.html,detail.html,manage.html等一样。
但该部分只是网页的一部分,所以我无法在base.html中使用它。
我在考虑使用include。但由于侧边菜单依赖于要生成的数据库查询,因此我必须对每个视图进行查询。这也是冗余代码。
此功能的最佳做法是什么?
干杯!
答案 0 :(得分:5)
您可以编写自定义inclusion_tag,这对于该方案更为可行:
<强>程序my_app / templatetags / my_app_tags.py 强>
from django import template
register = template.Library()
@register.inclusion_tag('side_menu.html')
def side_menu(*args, **kwargs):
# prepare context here for `side_menu.html`
ctx = {}
return ctx
然后在任何模板中你想要包含侧面菜单:
{% load side_menu from my_app_tags %}
{% side_menu %}