所以我们正在编写一个超级简单的游戏应用程序(回答问题,获得积分),我们希望在页面上每个屏幕的侧栏中呈现高分。
所以我理解Django自动(有点)将经过身份验证的用户作为参数传递(如果我们使用render())但是我不确定如何传递基本上将会是:
top_list = User.objects.filter().order_by('-score')[:10]
这样我们就可以在基本模板中修复一个漂亮的小顶级列表:)
我们在这里查看了不同的问题,例如this one,并考虑解决方案是否要编写我们自己的上下文处理器?
修改 可能是this的副本,所以我是否应该编写自定义模板标记?
答案 0 :(得分:1)
您可以使用django模板标签来完成它。
在myapp/templatetags/
下创建myapp_tags.py
和__init__.py
在myapp_tags.py
中执行以下操作:
from django import template
register = template.Library()
@register.assignment_tag
def get_top_list():
top_list = User.objects.filter().order_by('-score')[:10]
return top_list
然后在你的模板中使用它:
{% load myapp_tags %}
{% get_top_list as top_list %}
{% for top_user in top_list %}
...