将函数用于模板(Django / Python)

时间:2017-07-24 12:29:46

标签: django forms dictionary

我试图使用比较表单标题和数据中的键的函数。如果键不相似,则此函数会添加一个空字段。

我的views.py中的效果非常好。

#Entries define all the datas taken from the fobi forms.

headers = json.loads(entries{0}.saved_data)
headers  = headers.items()

for key, value in headers:
    for data in entries:
        data = json.loads(data.saved_data)

        formatted[value] = data.get(key, '')
        print(entries)


formatted = formatted.items()

然后我将格式化传递到上下文中,在我的模板中我做了:

<tr>

            {% for key, valeur in headers %}
            <th>
            {{ key }}
            </th>
            {% endfor %}
            </tr> 


          </thead>
          <tbody>

                <tr>

                {% for key, valor in headers %}
                {% for cle, valeur in formatted %} 


                {%if cle == valor%}

                 <td> {{valeur}}</td>

                {% endif %}                                     
                {% endfor %}
                {% endfor %}

                </tr>                           
          </tbody>   

结果很完美,例如每个标题都与数据对齐。如果有一些数据丢失,如图片,则此列中有一个空的sace。 enter image description here

我只通过循环打印了一个表单(最后一个从格式化的dict中保存)。我想打印我的所有表格。但在views.py中似乎是不可能的。

我如何将其管理到模板中?

感谢您的回答!

BR,Karro。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

我创建了一个词典列表:

formattedList = []

然后,我改变了我的初始循环,以便在列表中设置每个字典:

for entry in entries:
    formatted = {}
    for key, value in headers:

       data = json.loads(entry.saved_data)

       formatted[value] = data.get(key, '')

    formatted = formatted.items()
    **formattedList.append(formatted)** 

最后,我在模板文件中更改了这些行:

<tbody>
                 **{%for element in formattedList%}**                
                <tr>

                {% for key, valor in headers %}
                **{% for cle, valeur in element %}**

                {%if cle == valor%}

                 <td> {{valeur}}</td>

                {% endif %}                                   
                {% endfor %}
                {% endfor %}

                </tr>        
                 {% endfor %}            
          </tbody>   

一切正常!

我得到了所有结果!

enter image description here