Что не так с этим циклом в моем представлении / шаблоне Django? - PullRequest
0 голосов
/ 08 декабря 2009

Ненавижу спрашивать здесь, но я в тупике, как и парни из irc.

Шаблон не отображает содержимое списка, который я пытаюсь отобразить.

{{bet}} также не отображает никаких значений. Чего мне не хватает?

Шаблон:

{% for bet in bets %}
<tr>
    <td><div>{{ bet.game_num }}</div></td>
    <td><div>{{ bet.home_team }}</div></td>
    <td><div>{{ bet.home_odds }}</div></td>
    <td><div id="home-odds-checkbox"><input type="checkbox"></div></td>
    <td><div>{{ bet.visiting_team }}</div></td>
    <td><div>{{ bet.visiting_odds }}</div></td>
    <td><div id="visiting-odds-checkbox"><input type="checkbox"></div></td>
    <td><div>{{ bet.tie_odds }}</div></td>
    <td><div id="tie-odds-checkbox"><input type="checkbox"></div></td>
</tr>
{% endfor %}

Вид:

def choose_bets(request):
    # Should be a post to get to this page
    num_games = int(request.POST['games']) + 1

    # Fill BetData with teams and odds
    bets = []
    for x in range(1, num_games):
        try:
            league_id = int(request.POST[str(x) + '-league'])
            game_num = int(request.POST[str(x) + '-game_num'])
            home_team = request.POST[str(x) + '-home_team']
            visiting_team = request.POST[str(x) + '-visiting_team']
            home_odds = float(request.POST[str(x) + '-home_odds'])
            visiting_odds = float(request.POST[str(x) + '-visiting_odds'])
            tie_odds = float(request.POST[str(x) + '-tie_odds'])
            skip_game = False

        except ValueError:
            league_id,game_num,home_odds,visiting_odds,tie_odds = 0,0,0,0,0 # bad fix
            home_team,visiting_team = '',''
            skip_game = True    # Do not include entry in calculation

        finally:
            bets.append([game_num, league_id, home_team, visiting_team, home_odds, visiting_odds, tie_odds, skip_game])

    return render_to_response('choose_bets.html', locals(), context_instance=RequestContext(request))

Контекст переменной ставки:

'ставки': [[1, 5, u '', u '', 1.0, 1.0, 3.0], [2, 4, u '', u '', 2.0, 2.0, 43555.0], [3 , 3, u '', u '', 3.0, 3.0, 5.0]]

Ответы [ 3 ]

4 голосов
/ 08 декабря 2009

Шаблон ссылается на именованные поля в bet, но вы передали в массиве.

Либо измените append на choose_bets, например:

bets.append(dict(game_num=game_num, league_id=league_id, home_team=home_team, visiting_team=visiting_team, home_odds=home_odds, visiting_odds=visiting_odds, tie_odds=tie_odds, skip_game=skip_game))

Итак, теперь у вас есть диктовка с ключами, на которые вы можете ссылаться как есть из вашего шаблона.

Или ... измените шаблон, чтобы использовать передаваемый массив. Например, вместо:

<td><div>{{ bet.game_num }}</div></td>

Использование:

<td><div>{{ bet.0 }}</div></td>
1 голос
/ 08 декабря 2009

Начните с тега {% debug%} . Посмотрите, содержит ли контекст то, что вы считаете нужным.

0 голосов
/ 08 декабря 2009

Почему бы вам не попробовать явно передать каждую переменную одну за другой и посмотреть, в какой момент она перестает работать, вместо использования локальных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...