@Shesoff
тамагочи из 90'ых

Можно ли использовать несколько атрибутов SelectField в одном объекте?

Имею простейшее приложение на Flask'е, обнаружил непонятное для меня поведение, любопытно с чем это связано, надеюсь что кто-нибудь прояснит. Суть такова: при добавлении тестового (test = SelectField(u'Test', choices=[('0', '0'), ('1', '1')])), даже не используемого поля SelectField в объект, приложение перестаёт реагировать на нажатие кнопки submit должным образом, просто рефрешит страницу, ничего не пишет ни в консоль, ни в веб.
run.py
from 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>
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 1
@pcdesign
На мой взгляд должно быть так.
Вместо if form.validate_on_submit():
if request.method == 'POST' and form.validate_on_submit():


И вызвать request
from flask import request
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы