2016-03-30 5 views
0

スーパーシンプルなゲームアプリ(質問に答え、ポイントを得る)を書いているので、すべての画面のサイドバーにハイスコアを表示したいページ。base.htmlでハイスコアをレンダリングする方法

だから私は(我々は(レンダリング使用している場合))Djangoは自動的に(ちょっと)の引数として認証されたユーザに渡すことを理解しますが、私は基本的にどうなるかを渡すするかどうかはわかりません。

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

ように、

たとえば、this oneのようなさまざまな質問を見て、ソリューションが独自のコンテキストプロセッサを作成することになるかどうかを考えましたか?

EDIT:thisの重複も可能性がありますので、私はおそらく代わりに、カスタムテンプレートタグを記述する必要がありますか?

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 

そして、あなたのテンプレートでそれを使用する:myapp/templatetags/の下

は、次の操作を行う myapp_tags.py__init__.py

myapp_tags.pyでの作成

答えて

1
あなたはそれを行うにはDjangoのテンプレートタグを使用することができます

..このように:

{% load myapp_tags %} 

{% get_top_list as top_list %} 

{% for top_user in top_list %} 
... 
+0

ありがとう!私たちがcss/htmlでサイドバーを作る方法を学ぶとすぐに、実装がうまくいくかチェックします!しかし、それは固いソリューションのように聞こえる! :) – MrJalapeno

関連する問題