在django模板中迭代用户

时间:2013-04-23 15:10:18

标签: django

我想在个人资料模板中打印所有用户值。 手动打印它有效: `

<table class="table table-striped table-bordered"> 
    <tr><th>{{ user.username }}</th></tr>
    <tr><th>{{ user.first_name }}</th></tr>
    <tr><th>{{ user.last_name }}</th></tr>
    <tr><th>{{ user.email }}</th></tr>
</table>`

但这种方法不起作用: `

<table class="table table-striped table-bordered">
    {% for field in user.fields %}
        <tr>
            <td>{{ field.name }}</td>
            <td>{{ field.value }}</td>
        </tr>
    {% endfor %}
</table>

我尝试使用这种方法Iterate over model instance field names and values in template

任何提示?

2 个答案:

答案 0 :(得分:2)

模型实例上没有可用的字段属性。

如果你真的想要这样的东西:

views.py:

d = {}

for each in u._meta.fields:
    d[each.name] = getattr(u, each.name)

模板:

{% for k,v in d.items %}
    {{k}}
    {{v}}
{% endfor %}

答案 1 :(得分:0)

您必须确保通过views.py文件(不是user.username或user.first_name等)发送“user”对象本身。这样你就可以在你的模板中写下:

<table class="table table-striped table-bordered">
        {% for field in user %}
            <tr>
                <td>{{ field.name }}</td>
                <td>{{ field.value }}</td>
            </tr>
        {% empty %}
            <tr>
                <td>No "user" field</td>
            </tr>
        {% endfor %} 
</table>

注意第二行的变化(“for user in user”)。