OK.Я пишу систему, в которой пользователи могут «выбрать победителя».У меня есть таблица «matchup» и таблица «picks».На веб-странице сопоставления я загружаю все сопоставления за этот день в контекст вместе со всеми выборками за этот день.
Теперь мне нужно отобразить изображения с галочками рядом с вариантами, чтобы пользователь мог«выбрать» этот пункт (точно так же, как проверка «лучший ответ» при переполнении стека) Чтобы увидеть, какие проверки должны быть в нижнем (выбранном) состоянии (или в верхнем состоянии, или в «выигранном состоянии» или «потерянном состоянии»)Я создаю тег шаблона.
Вот соответствующий фрагмент из шаблона
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 измой шаблонный тег, я использую переменную контекста вместо переменной bits [2] (выбирает, которая была передана из моего представления как «выбирает»).
Могу ли я передавать объекты в теги моего шаблона?И зачем мне вообще беспокоиться, если я могу просто получить доступ к объекту в контексте.
Редактировать: Раньше вместо использования контекста я делал что-то вроде «return self.picks.pick», и он бросалкакой-то "unicode не содержит свойства" pick "" ошибка
Cheers!