我尽量不要在不同的模板上写两次相同的代码。改变某些东西时真的很麻烦。
所以当我转到网页的某个部分时,我想显示一个侧面菜单。这个侧边菜单应该在几个模板上。如 index.html、detail.html、manage.html 等。
但该部分只是网页的一部分,所以我不能将它放在 base.html 中。
我正在考虑使用 include。但是由于侧面菜单依赖于要生成的数据库查询,因此我必须对每个 View 进行查询。这也会产生冗余代码。
此功能的最佳做法是什么?
干杯!
请您参考如下方法:
您可以编写自定义 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 %}
