Имею простейшее приложение на Flask'е, обнаружил непонятное для меня поведение, любопытно с чем это связано, надеюсь что кто-нибудь прояснит. Суть такова: при добавлении тестового (test = SelectField(u'Test', choices=[('0', '0'), ('1', '1')])), даже не используемого поля SelectField в объект, приложение перестаёт реагировать на нажатие кнопки submit должным образом, просто рефрешит страницу, ничего не пишет ни в консоль, ни в веб.
run.pyfrom flask import Flask, render_template, flash
from flask_wtf import FlaskForm
from flask_wtf.csrf import CSRFProtect
from wtforms import SelectField, SubmitField
app = Flask(__name__)
csrf = CSRFProtect(app)
class Config(object):
SECRET_KEY ='123123123qweasdzxc'
app.config.from_object(Config)
class Exploits(FlaskForm):
test = SelectField(u'Test', choices=[('0', '0'), ('1', '1')])
language = SelectField(u'Programming Language', choices=[('cpp', 'C++'), ('py', 'Python'), ('text', 'Plain Text')])
use = SubmitField('Выбрать')
@app.route("/", methods=['GET', 'POST'])
def home():
form = Exploits()
if form.validate_on_submit():
print('SUBMIT!!!')
flash('Botton is submited {}'.format(form.language.data))
return render_template('index.html', form=form)
if __name__ == "__main__":
app.run(debug=True)
index.html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<form action="" method="post" novalidate>
{{ form.csrf_token }}
{{ form.language }}
{{ form.use }}
</form>
</body>
</html>