2016-03-30 48 views
0

因此,我們正在編寫一個超級簡單的遊戲應用程序(回答問題,獲得積分),並且我們希望在每個屏幕的邊欄中呈現高分這一頁。如何在base.html中渲染高分

所以我的理解是Django的自動(有點)經過驗證的用戶作爲參數(如果我們使用render()),但我不知道如何通過將基本內容:

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

使我們可以在我們的基本模板中修復一個漂亮的小頂部列表:)

我們在這裏看到了不同的問題,例如this one,想想解決方案是編寫我們自己的上下文處理器嗎?

編輯: 可能是this重複這樣,我也許寫一個自定義模板標籤呢?

回答

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 %} 
... 
+0

謝謝!只要我們已經學會了如何在CSS/html中創建一個邊欄,我會檢查這個實現是否工作正常!但它聽起來像一個堅實的解決方案! :) – MrJalapeno