【问题标题】:Iterating over user in django template在 django 模板中迭代用户
【发布时间】:2013-04-16 21:06:27
【问题描述】:

我想在我的个人资料模板中打印所有用户值。 手动打印它可以工作: `

<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

有什么提示吗?

【问题讨论】:

    标签: django


    【解决方案1】:

    模型实例上没有称为字段的属性。

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

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

    【讨论】:

      【解决方案2】:

      您必须确保通过您的 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>
      

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

      【讨论】:

      猜你喜欢
      • 2015-12-10
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 2021-10-28
      • 2011-12-14
      • 2012-07-27
      • 1970-01-01
      相关资源
      最近更新 更多