当我在模板中渲染时,查询集“丢失”

时间:2014-04-23 12:23:48

标签: django django-templates python-3.2

最近两天我遇到了这个问题。代码的第一部分:

viewa.py

def A_dashboard(request):
    user = User.objects.get(id=request.user.id)
    users = User.objects.all()
    return render_to_response('dashboard.html', {"user": user, "users": users} , context_instance=RequestContext(request))

根据用户的一个属性,仪表板将有所不同。 dashboard.html

{% extends "index.html" %}
{% load staticfiles %}
{% block content %}
    {% if user.is_A %}
        {% include "dashboards/A_dashboard.html" %}
    {% endif %}
    {% if user.is_B %}
        {% include "dashboards/B_dashboard.html" %}
    {% endif %}
{% endblock content %}

A用户的具体仪表板。

仪表板/ A_dashboard.html

{% load staticfiles %}

<div class="offrow rowpadding dashboard-info">
    <div class="container">
        <div class="row">
            <div class="col-lg-7">
                <div class="row">
                    {{user}}
                    {{users}}
                    {% for user_ in users %}
                        <p>{{user_}}</p>
                    {% endfor %}
                </div>
            </div>
            <div class="col-lg-5">
                <div class="row">
                    <div class="col-md-12">
                            {% include 'calendar.html' %}
                    </div>
                </div>
           </div>
    </div>
</div>

刚才我以A用户身份登录。在视图中,我检查类以检查一切正常。它的类<class 'django.db.models.query.QuerySet'>

但是,当我尝试在模板中迭代列表时,它不存在。

你能想象发生什么事吗?

问候。

1 个答案:

答案 0 :(得分:0)

奇怪的是,对象不存在。

User.objects.all()是查询集,因此在模板users中是一个查询集。

user是一个用户对象,它有一些属性,例如usernameemail等。

for user_ in users您获得的每个用户对象(user_)与上面的user类似

所以试试这个

<div class="row">
    name: {{ user.username }}
    {% for user_ in users %}
        <p>name: {{ user_.username }}</p>
    {% endfor %}
</div>

{{user.username}}{{ user.username }}是相同的,空格只是为了看起来优雅