在Flask中迭代request.form仍然只有一个结果,Python

1 投票
1 回答
4539 浏览
提问于 2025-04-18 02:22

我有这样一个视图:

def admin():
    f = file('config.py', 'r').read()
    c = f.split('\n')
    confs = [e for e in c if e.strip()]
    conf_dict = {}
    for conf in confs:
        p = conf.split('=')
        conf_dict[p[0]] = p[1].strip("'")

    val = [value for key,value in conf_dict.iteritems()]
    opval = not val

    if request.method == 'POST':
        name = request.form
        for v in request.form:
            return "%s : %s" % (v,request.form[v])
    return render_template('admin.html', opval = opval, conf = conf_dict)

这是它的HTML部分,里面有一个表单:

<h2>Configuration Page</h2>

<form method="post">

<hr>
<b>Server</b>
</br>
</br>
{% for key,value in conf.iteritems() %}
    {% if (value == 'True') %}

        {{ key.replace('_', ' ').capitalize() }} :

    <input type="checkbox" value ='True' name='check' checked>
        {{ value }}</input>

    {% elif (value == 'False') %}

        {{ key.replace('_', ' ').capitalize() }} :

    <input type="checkbox" value ='False' name='check'>
        {{ value }}</input>

    {% else %}

    </br>
    </br>

    {{ key.replace('_', ' ').capitalize() }} : 

        <input type=text name={{ key.replace('_', ' ').lower() }} 
            value={{value}}>

    {% endif %}
    {% endfor %} 
    <hr>
    </br>
    </br>

<input type="submit" value="Save" />

</form>

我想要获取的是所有输入框中name字段的值,但我只得到了这个secret : changethiskey

即使是普通的字典,只要放在POST执行流程中,也会出现这个问题。

1 个回答

0

你在for循环里使用了return,这样的话循环会在第一次取到值的时候就结束了。

撰写回答