OK。私は、ユーザーが「勝者を選ぶ」システムを作成しています。私は "マッチアップ"テーブルと "ピック"テーブルを持っています。マッチアップのウェブページでは、その日の全てのマッチアップを、その日のすべてのピックと一緒にコンテキストにロードします。カスタムDjangoテンプレートタグにオブジェクトを渡すにはどうしたらいいですか?私は方法を考え出したが、それはハッキーに見える。
ここでは、ユーザーがそのアイテムを「選択」できるように、選択肢の横にチェックマークイメージを表示する必要があります(スタックオーバーフローの「ベストアンサー」チェックと同じです)。 (またはアップ状態、または "ウォン状態"または "ロスト状態")、私はテンプレートタグを作成しています。ここで
はテンプレート
3 {% load matchup_tags %}
4
5 {% for matchup in matchups %}
6 <div class="grid_6" style="margin-top:15px; border:1px solid black;">
7
8 <div class="div-status"><span class="game-status">{{matchup.status}}</span></div>
9 <div class="opt1">
10 <div class="pick-home {% get_check matchup picks %}">
から関連するスニペットであるあなたが見ることができるように、get_checkテンプレートタグがループ内で実行されます。現在のマッチアップを、このテンプレートタグのピックリストとともに渡します。ここで
は1 from django.template import Library, Node
2 from matchup.models import *
3
4 register = Library()
5
6 class PickerNode(Node):
7 def __init__(self , matchup , picks):
8 self.matchup , self.picks = matchup , picks
9
10 def render(self, context):
11 p = context['picks']
12 return p[0].pick
13
14 def get_check(parser, token):
15 bits = token.contents.split()
16 return PickerNode(bits[1] , bits[2])
17
18 get_check = register.tag(get_check)
あなたは私のテンプレートタグからライン12を見れば、私が代わりにビット[2]変数(ピックのコンテキスト変数を使用していますテンプレートタグで私の「ハッキング」の試みであります私の見解では "ピック"と呼ばれていました)。
テンプレートタグにオブジェクトを渡すことができますか?そして、私が文脈でオブジェクトにアクセスできるだけでは、なぜ私は気にしませんか?
編集:以前、代わりにコンテキストを使用すると、エラー
乾杯私は 「戻りself.picks.pick」のようなものをやっていたし、それはいくつかの「『選ぶ』プロパティが含まれていませんユニコード」を投げていました!
はい、テンプレートタグにオブジェクトやスカラー値を渡すことができます。コンテキストから変数を解決することもできます。私はDjangoのテンプレートシステムについて、どれが効率的であるかを伝えるための十分な技術知識がありません。誰もそれに話すことができますか?私もそれについてもっと学ぶことに興味があります。 – Brandon