Django模板不会显示列表

时间:2014-06-17 14:13:44

标签: django python-3.x django-templates

我已经看过以前的问题了,我无法找到问题的答案 我正在尝试显示一个2D列表,我之前在HTML中使用不同的列表。 我已经在其他列表中使用了类似的方法,但它不会显示,我只是得到了标题。
HTML:

    <table class="listtable" >
    <thead>
    <tr>
        <th>No</th>
        <th>Account No</th>
        <th>Time</th>
        <th>Message</th>
    </tr>
    </thead>
    {% for person in user %}
    <tr>
        {% for message in person %}
        <td>{% autoescape off %}{{ message }}{% endautoescape %}</td>
        {% endfor %}
    </tr>
    {% endfor %}
</table>

我在视图中打印了列表,所以我知道在视图中它是正确的。我100%确定我也使用了正确的变量 视图中的代码类似于:

user = get_data_from_other_source()
for item in user:
    print(item)

打印件正好显示它应该是什么 列表是关闭的:

[4, '<account number>', '<time>', 'somestring']
[3, '<account number>', '<time>', 'somestring']

页面来源说:

<table class="listtable" >
    <thead>
    <tr>
        <th>No</th>
        <th>Account No</th>
        <th>Time</th>
        <th>Messages</th>
    </tr>
    </thead>

</table>

编辑:审核后的视图代码..

@login_required(login_url='/login')
def page_control(request):
    acc_no = request.session['acc_no']

    user = setup_page_control (acc_no)
    for item in user:
        print(item)
    return render_to_response("<htmlfile>.html",
                              locals(),
                              context_instance=RequestContext(request))



def setup_user_control(acc_no):
    messages = <outside magic>
    user = reversed(messages)
    return user

我从代码中挖了很多东西,并更改了变量名等。 我只删除了我100%肯定不是问题的东西

3 个答案:

答案 0 :(得分:2)

您找到的问题的解释:

reversed()返回反向iterator。这是 NOT 反转列表,如您所愿:

>>> a = [1,2,3,4,5]
>>> print reversed(a)
<listreverseiterator object at 0x...>

正如您所看到的,reverse(a)不是反向列表,而是实际的迭代器本身。为了得到你想要的反向列表,你可以使用:

user = list(reversed(messages))
# or
user = messages[::-1]

(来源:How can I reverse a list in python?

答案 1 :(得分:0)

我相信你的回答应该是这样的:

 return render_to_response("<htmlfile>.html",
                          {'user':user},
                          context_instance=RequestContext(request))

答案 2 :(得分:0)

我发现了我的问题,但我不确定为什么会这样。 当我删除时:

user = reversed(messages)

模板愿意再次输出列表。非常奇怪。如果有人知道为什么,这将是一个很好的解释:)