【问题标题】:What is wrong with this loop in my Django view/template?我的 Django 视图/模板中的这个循环有什么问题?
【发布时间】:2009-12-08 00:41:33
【问题描述】:

我不想在这里问,但我很困惑,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]]

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    模板引用了bet 中的命名字段,但你传入了一个数组。

    或者像这样在choose_bets 中更改您的append

    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>
    

    【讨论】:

    • 麦克斯,我欠你一个。感谢您为我发现这一点。
    • 很好的答案 Max - 如果您缩进 4 个空格,代码会显示得更好(添加或编辑时选择您的代码并按 Ctrl-K,或者选择它并单击 0101 按钮,或者只是缩进它手动 4 个空格)。可以使用反引号 (`) 使内联代码看起来像代码。我已经为你编辑了这篇文章。欢迎使用 stackoverflow!
    • 啊哈!太棒了 - 感谢您的编辑和指导。我本打算让自己熟悉标记,但急于发布帖子。
    【解决方案2】:

    {% debug %} 标记开头。查看上下文是否包含您认为应该包含的内容。

    【讨论】:

      【解决方案3】:

      您为什么不尝试将每个变量一个一个地显式传递并查看它在什么时候停止工作,而不是使用局部变量

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-09
        • 2013-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多