Flask #18: Применение WTForms для работы с формами сайта
HTML-код
- Опубликовано: 27 авг 2024
- Инфо-сайт: proproprogs.ru
Основы работы с расширением Flask-WTF для автоматизации обработки форм на сайте. Рассматриваются классы: FlaskForm, StringField, PasswordField, BooleanField, TextAreaField, SelectField, SubmitField. Валидаторы: DataRequired, Email, Length. Методы формирования тегов в шаблонах: hidden_tag, label.
Проект занятия: github.com/sel...
WTForms: wtforms.readthedocs.io
Валидаторы: wtforms.readth...
Вдумчивое, глубокое, подробное изложение материала. Впрочем, как всегда
Про CSRF отдельное спасибо))
Спасибо!
всё круто классно, спасибо за простое и понятное объяснение
Единственное улучшить бы качество видео тк на большом мониторе 720 уже мылит)
Многие на смартфонах смотрят, а там большее разрешение сделает все мелким.
Рассматривается в курсе возможность редактирования информации в БД через форму, формировать отчеты из данных и осуществлять скачивания данных форм автоматически?
у меня не работало, пока не проинсталировал email валидатор
а как писать обработку не на submit, а на любой клик, любое событие и как получать значения полей, которые стоят в цикле for?
Добрый день!
А Вы не могли бы показать как использовать SelectMultipleField? Очень понадобилось, а найти что то способное к восприятию практически невозможно.
Заранее спасибо!
Отличный курс.
Однако конкретно по этому уроку у меня осталось смутное представление зачем мне эти формы нужны=)
Кода стало больше, код стал более абстрактным.
В чём профит?
В защите от злоумышленников
У кого validate_on_submit всегда возвращает True?
1. Убедитесь, что вы использовали правильный синтаксис и поставили скобки после validate_on_submit. Так как это вызываемый объект.
Спасибо большое! Какая разница между pip install flask_wtf и pip install Flask-WTF? Какую команду использовать?
ну, сайт pypi.org/project/Flask-WTF/ показывает команду pip install Flask-WTF, лучше ее и использовать
Спасибо большое за урок! Подскажите пожалуйста, откуда форма берет данные с пост запроса? Мы же даже при инициализации request.form не передаем
от браузера клиента, в объект request данные записываются автоматически самим Flask
надо через pip инсталировать валидатор email_validator
ну в видео же говорится об этом
@@undefinedundefined2459 да, говорится. Но я пропустил. Думаю, лишним комментарий не будет. И может быть кому-то поможет. Не только я такой невнимательный.
А в чем разница между InputRequired и DataRequired?
Из документации:
Note there is a distinction between this and DataRequired in that InputRequired looks that form-input data was provided, and DataRequired looks at the post-coercion data.
Но что-то не понимаю этого, когда какую лучше использовать, нагуглил что лучше использовать InputRequired
насколько я понял, DataRequired смотрит, чтобы атрибут field.data был True, т.е. если его значение будет 0 или пустой строке, то он выдаст ошибку
8:26 почему тег обходится без закрывающегося тега?
лучше закрывать, но в простых ситуациях браузер корректно их и сам закрывает
Подскажите, а как к форме подключить стили, я видел есть flask_bootstrap, но не пойму как подключать свои ?
Очень просто, форма - это HTML-страница, в этой странице прописываете в разделе head внешний файл со своими стилями (css/styles.css) и они применятся к вашей странице.
@@selfedu_rus Извините, я имел ввиду, настроить стили для WTForms. Есть решение как настроить эти формы через расширение flask_bootstrap, а как настроить используя свои настройки CSS не понял.
selfedu, подскажите пожалуйста, что делает функция super() в шаблонах?
Она берет текст из блока наследуемого шаблона. Подробнее смотрите в серии занятий по Jinja
@@selfedu_rus понял, спасибо большое за обратную связь!
Ошибка в расшифровке CSRF: не Cross-Sire, а Cross-Site
спасибо, поправил
Выдает ошибку - jinja2.exceptions.UndefinedError: 'forms.LoginForm object' has no attribute 'hidden_tag'. Решил убрать строку со скрытым токеном и вуаля- jinja2.exceptions.UndefinedError: 'wtforms.fields.core.UnboundField object' has no attribute 'label'/
Как бороться с этим?
Разобрался со своей оплошностью. Я забыл унаследовать LoginForm от FlaskForm