【问题标题】:Dictionary As Table In Django Template字典作为 Django 模板中的表
【发布时间】:2012-04-19 20:49:57
【问题描述】:

我有一本字典:

field = 

{
   u'Birthday:': [datetime.date(2012, 4, 6), datetime.date(2012, 4, 27)],
   u'Education': [u'A1', u'A2'],
   u'Job:': [u'job1', u'job2'],
   u'Child Sex:': [u'M', u'F']
}

我的模板代码是:

<table width="100%" border="0">
     <tr>
        {% for k, v in field.items %}
            <th>{{ k }}</th>
        {% endfor %}
     </tr>
     <tr>
       {% for k,v in field.items %}
            <td>
                <table width="100%" border="0">
                 {% for a in v %}
                     <tr class="{% cycle 'odd' 'even' %}"><td>{{ a }}</td></tr>
                 {% endfor %}
                </table>
            </td>
        {% endfor %}
     </tr>
</table>

我想将字典键显示为表头,将 esach 值显示为行:

Birthday                          Education      Job        Child Sex
datetime.date(2012, 4, 6)         A1             job1       M
datetime.date(2012, 4, 27)        A2             job2       F

但我必须插入第二个表。有没有办法将字典键显示为表头,将 esach 值显示为行?

提前致谢

【问题讨论】:

    标签: python django-templates


    【解决方案1】:

    如果您将数据作为字典中的表格提供,则可以使模板代码更易于阅读。它看起来更像这样:

    field = {
        'headers': [u'Birthday:', u'Education', u'Job', u'Child Sex'],
        'rows': [[datetime.date(2012, 4, 6), u'A1', u'job1', u'M']
                ,[datetime.date(2012, 4, 27), u'A2', u'job2', u'F']]
    }
    

    您现在可以按如下方式遍历标题:

    <tr>
    {% for header in field.headers %}
        <th>{{ header }}</th>
    {% endfor %}
    </tr>
    

    每一行都可以使用:

    <tr>    
    {% for value in field.rows %}
        <td>{{ value }}</td>
    {% endfor %}
    </tr>
    

    现在,您可以使用field.keys() 获取'headers' 值:

    [u'Birthday:', u'Education', u'Job:', u'Child Sex:']
    

    您可以使用以下循环获取'values'(其中2 是行数):

    rows = []
    for i in xrange(2):
        row = []
        for k in field.keys():
            row.append(field[k][i])
        rows.append(row)
    

    或者作为单行:

    rows = [[field[k][i] for k in field.keys()] for i in xrange(2)]
    

    【讨论】:

      【解决方案2】:

      Simeon 的回答对我有用,但由于嵌套列表,我必须在模板中做一些不同的事情才能使行和数据看起来正确:

              {% for row in field.rows %}
                  <tr>
                      {% for value in row %}
                          <td>{{value}}</td>
                      {% endfor %}
                  </tr>
              {% endfor %}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-27
        • 1970-01-01
        • 2012-11-13
        • 1970-01-01
        • 1970-01-01
        • 2018-01-27
        • 2023-03-19
        相关资源
        最近更新 更多