JRazor
@JRazor
Senior StarkOverFlow Programmer

Flask: как собрать простую форму?

Здравствуйте, уважаемые коллеги.

Решил попробовать собирать простую веб-форму для парсеров. Выбор пал на Flask (ввиду его легкости), но вот создание форм в нем описано, я скажу, не ахти.

Нужна совсем простая форма:
e67d362322fe41dab80baccd8d51fe37.jpg

Первая - это просто Label, которая должна отправлять в модуль для последующей работы.
Вторая - кнопка, для загрузки изображения. Ну, почти загрузки: просто считывать путь к этому изображению.
По нажатию кнопки Старт одно из них (заполненное) должно отправиться в другой модуль.

Все, казалось бы, просто. Но вот Flask не шибко дружит с родными формами, а WTForms - это какая-то громадина.

Может ли кто-нибудь посоветовать что-нибудь по этому поводу?
  • Вопрос задан
  • 9322 просмотра
Решения вопроса 1
@euspensky
очень подробный пост про формы во flask

конкретно такую форму можно сделать так:

from flask_wtf import Form, TextField, FileField
class PuziForm(Form):
    image_url = TextField("label1")
    image = FileField("label2")

@app.route('/test', methods=['GET', 'POST'])
def test():
    form = PuziForm()
    if form.validate_on_submit():
        result = (form.image.data and form.image.data.read()) or form.image_url.data
    else:
        result = 'not submitted'
    return render_template('test.html', form=form, result=result)


<form method="post" enctype=multipart/form-data>
        {{ form.hidden_tag() }}
        {% for element in form %}
            {% if element.widget.input_type != 'hidden' %}
                {{ element.label }} {{ element() }} <br>
            {% endif %}
        {% endfor %}
        <input type="submit">
    </form>
<br>
{{ result }}


закругленные уголки добавить по вкусу.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@s1dney
wtf удобен в работе с большими и сложными формами и когда необходимо эти формы генерировать динамически и удобно, избавляя себя от лишнего кода в темплейтах
а если вам нужна форма с 3-мя полями, зачем натягивать на flask лишние зависимости, если это все укладывается в 5 строчек без wtf:
<form>
<input type="text">
<input type="file">
<button type="submit">OK</button>
</form>


@app.route('/test', methods=['GET', 'POST'])
def test():
	form = request.form
Ответ написан
@xzfallen
книга Разработка веб-приложений с использованием Flask на языке Python my-files.ru/tol0cr
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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