django - Can't render on base.html?
问题描述
I have a base.html which essentially provides the navigation for my app.
I want to be able to add some stats into the nav bar - so I am trying to render them onto base.html
The same script works, if I change base.html to home.html, but I don't want to repeat the same code on every page, to retain the stats when I navigate away from home.
Here is my view:
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)
How can I make this render to base.html, rather than copying the same code for every page?
Thanks
解决方案
您可以使用模板标签
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
注意:如果仅根据要求修改一个计数
推荐阅读
- xamarin - 错误访问路径“/storage/emulated/0/abc.txt”在 Xamarin Android 中被拒绝
- angular - 延迟加载的组件未加载它显示空白页面
- android - 模拟器不工作:任务“:app:installDebug”执行失败
- database - 仅使用 databasechangelog 表生成 liquibase sql 文件
- javascript - Javascript:切换按钮无法正常工作
- php - 是否可以在定义的常量内有一个函数?
- django - 无法导入在另一个应用程序中定义的模型
- c# - Selenium.PhantomJS 是无效的命名空间
- ruby-on-rails - 无法自动加载常量 AuthenticateFromToken,需要 ./app/api/authenticate_from_token.rb 来定义它
- python - 仅当内容满足某些条件时如何将表单保存到数据库