Я едва понял, как реализовать раскрывающийся список в Flask с помощью WTForms, и он работает именно так, как я хочу, но только в первый раз. Если я захожу на страницу с раскрывающимся списком, она работает точно так же, как и ожидалось, и правильно отправляет сообщения о перенаправлении, которое также работает отлично. Но если я go вернусь на страницу с раскрывающимся списком, все параметры раскрывающегося списка исчезнут, и выбрать что-либо будет невозможно. Это происходит, даже если я просто go перехожу на эту страницу и перезагружаюсь, не отправляя и даже не посещая другие страницы. Может кто-нибудь сказать мне, что я делаю неправильно?
Вот код формы и маршрута:
class SelectForm(FlaskForm):
selectartist = SelectField('Artist', choices=artists)
selectgenre = SelectField('Genre', choices=genres)
@app.route('/filter', methods=['GET', 'POST'])
def filter():
try:
if request.method == "POST":
enteredArtist = request.form['selectartist']
enteredGenre = request.form['selectgenre']
return redirect(url_for('test', artist=enteredArtist, genre=enteredGenre))
except Exception as e:
flash(e)
filterform = SelectForm()
return render_template('filter.html', form=filterform)
И вот html для страницы (бесстыдно скопировано из другого вопроса здесь):
{% macro render_bootstrap_field(field) %}
<div class="form-group {% if field.errors %} error {% endif %}">
<label class="col-lg-2 control-label">{{ field.label }}</label>
<div class="col-lg-8">
{{ field(class='form-control')|safe }}
{% if field.errors %}
{% for error in field.errors %}
<span class="help-inline">[{{ error }}]</span><br>
{% endfor %}
{% endif %}
</div>
</div>
{% endmacro %}
{% block app_content %}
<div class="container-fluid" style="margin-top: 10em">
<div class="row">
<form method="POST" action="#">
{{ render_bootstrap_field(form.selectartist) }}
{{ render_bootstrap_field(form.selectgenre) }}
<input type="submit" value="Go">
</form>
</div>
</div>
{% endblock %}