如何在base.html中呈现高分

时间:2016-03-30 09:58:28

标签: django

所以我们正在编写一个超级简单的游戏应用程序(回答问题,获得积分),我们希望在页面上每个屏幕的侧栏中呈现高分。

所以我理解Django自动(有点)将经过身份验证的用户作为参数传递(如果我们使用render())但是我不确定如何传递基本上将会是:

top_list = User.objects.filter().order_by('-score')[:10]

这样我们就可以在基本模板中修复一个漂亮的小顶级列表:)

我们在这里查看了不同的问题,例如this one,并考虑解决方案是否要编写我们自己的上下文处理器?

修改 可能是this的副本,所以我是否应该编写自定义模板标记?

1 个答案:

答案 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 %}
...