使用Flask继承防止表单清除

时间:2017-01-25 04:03:11

标签: python html python-2.7 flask

我有一个表单,我希望不会在提交时发布(发布)。 我使用<option selected="selected">{{ yourvalue }}</option>在生成其他选项值之前将值保留在字段中。然后问题是yourvalue在选择框中重复出现。我可以从填充选项的yourvaluelist中删除numbers,但随着所选值显示在顶部,事情就会出现故障。总的来说,这似乎是一种笨重的方式,可以在提交时保持表单中的选定值。这样做的正确方法是什么?

__ init__py

from flask import Flask, render_template, request
app = Flask(__name__)

@app.route('/', methods=["GET", "POST"])
def test():
    numbers = [1, 2, 3]
    if request.method == "POST":
        return render_template('body.html', yourvalue=request.form['number'], numbers=numbers)
    return render_template('form.html', numbers=numbers)

app.run()

form.html

<html>
<body>
<form class="form-inline" method="POST" >

    <select class="form-control" id="number" name="number" required>
            <option value="" disabled selected></option>

        <option selected="selected">{{ yourvalue }}</option>
            {% for z in numbers %}
                <option value="{{ z }}">{{ z }}</option>
            {% endfor %}
        </select>

     <input type="submit" value="Submit">
</form>

{%  block body %}{% endblock %}
</body>
</html>

body.html

{% extends "form.html" %}
{%  block body %}
You chose {{ yourvalue }}
{% endblock %}

1 个答案:

答案 0 :(得分:1)

抱歉,我最初误解了你的问题。你能将HTML改成这样的东西吗?基本上添加一个Jinja If语句来查看'yourvalue'是否与'z'匹配,如果是,则在选项中添加“selected”。

<form class="form-inline" method="POST" >

    <select class="form-control" id="number" name="number" required>
            <option value="" disabled selected></option>

            {% for z in numbers %}
                <option {% if yourvalue = z %}
                          selected
                         {% endif %}
                  value="{{ z }}">{{ z }}</option>
            {% endfor %}
        </select>

     <input type="submit" value="Submit">
</form>