通过python列表循环并在烧瓶中显示结果

时间:2018-10-03 01:41:36

标签: python jinja2

python函数返回python列表

python模块功能

with open(xml_append_back) as fd1:
    doc = xmltodict.parse(fd1.read())
    codes = []

    for p in doc['Des']['Config']:
            codes.append(p['@Id'])
            codes.append(pl['@name'])


print(codes)
return codes

codes = ['f2ee4681', 'Conf. no: 1', '89282c5b', 'Conf. no: 2', '3e9dd219', 'Conf. no: 3', '773044b9'] # returned from python  to flask template result.html

我这样在我的templates / flask.html中调用此变量 烧瓶文件

@app.route('/result',methods = ['POST', 'GET'])
def result():

const_ids=run_d.run_de_selected_configs() # this function returns "codes" 

return render_template("result.html",result = 
constraint_names_from_form,result1=constraint_ids)

result.html文件

{% for key,key1  in result1 %}
<tr class="even"><td>{{ key }}</td><td>{{ key1 }}</td></tr> 

应该是

<tr class="even"><td>f2ee4681</td><td>Conf. no: 1</td></tr>
{% endfor %}

我在做什么错

2 个答案:

答案 0 :(得分:0)

回答我自己的问题 我在python代码中使用了zip实用程序,因为烧瓶中没有zip

function returncodes()
-------
--------- 

return zip(codes,codeNames) # in my case

烧瓶模板没有变化

@app.route('/result',methods = ['POST', 'GET'])
def result():

const_ids=run_d.run_de_selected_configs() # this function returns "codes" 

return render_template("result.html",result = 
constraint_names_from_form,result1=constraint_ids)

现在在我的result.html

{% for keys,keys2 in result1 %}
<tr class="even"><td>{{keys}}</td><td>{{keys2}}</td></tr>

 {% endfor %}

答案 1 :(得分:0)

当前,您的代码将所有Idname值打包到一个平面列表中。当您以后需要对其进行迭代时,该方法将无法正常工作,因为您希望每次迭代获得两个值,而只获得一个。

虽然有一些方法可以迭代列表中的对(例如zip(*[iter(x)]*2)),但我建议您直接建立一个元组列表。

尝试更改:

        codes.append(planet['@Id'])
        codes.append(planet['@name'])

收件人:

        codes.append((planet['@Id'], planet['@name']))