我有一个base.html,它实质上为我的应用程序提供导航。
我希望能够在导航栏中添加一些统计信息-因此,我正在尝试将其呈现到base.html
如果我将base.html更改为home.html,则相同的脚本有效,但是我不想在每个页面上重复相同的代码,以在我离开家时保留统计信息。
这是我的观点:
def stats(request):
incompletetasks = Todo.objects.filter(complete=False, creator=request.user).count()
shared = Todo.objects.filter(Q(shareslotone=request.user) | Q(shareslottwo=request.user) | Q(shareslotthree=request.user) | Q(shareslotfour=request.user) | Q(shareslotfive=request.user)).count()
closedtasks = Todo.objects.filter(complete=True, creator=request.user).count()
context = {'incompletetasks':incompletetasks, 'shared':shared, 'closedtasks':closedtasks}
return render(request, 'base.html', context)
如何将其渲染为base.html,而不是为每个页面复制相同的代码?
谢谢
答案 0 :(得分:1)
您可以为其使用模板标记
filters.py
register = template.Library()
@register.filter(name="get_model_count")
def get_model_count(model, app_label):
return apps.get_model(model_name=model, app_label=app_label).objects.count()
your_file.html
{% load filters %} #load it at the top of html file
<h2>{{ "your_model_name"|get_model_count:"your_app_name" }}</h2> #use this tag where you want to have count
注意:如果仅根据要求对一项进行修改,则此操作