2013-04-23 57 views
2

我想打印我的个人资料模板中的所有用户值。 打印手动将其工作原理: `遍历用户在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> 

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

任何提示?

回答

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 %} 
0

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

<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> 

请注意,在第二行的变化(“在用户现场”)。

+1

[...为空(HTTPS://docs.djangoproject .com/en/dev/ref/templates/builtins /#for-empty)看起来更好,我猜。 – soon 2013-04-23 15:26:56

+0

谢谢,你是对的。将在我的代码中进行编辑。 – jball037 2013-04-23 15:33:22