2013-04-23 86 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