Правило AnyOf
Правило AnyOf применяется к полю формы
и проверяет, что отправленное пользователем значение
содержится в заданном списке допустимых значений.
Первым параметром передаётся список разрешённых значений.
Вторым необязательным параметром передаётся сообщение
об ошибке, которое будет показано при неудачной валидации.
Синтаксис
AnyOf(values, [message])
Пример
Давайте создадим форму с полем choice,
которое принимает только значения из списка:
from flask import Flask, render_template, request
from wtforms import Form, StringField
from wtforms.validators import AnyOf
app = Flask(__name__)
class MyForm(Form):
choice = StringField('choice', [AnyOf(['abcde', 'article', 'hello'])])
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm(request.form)
if request.method == 'POST' and form.validate():
return 'valid'
return render_template('index.html', form=form)
Давайте создадим шаблон для вывода формы:
<form method="post">
{{ form.choice.label }} {{ form.choice() }}
<input type="submit">
</form>
При отправке значения 'abcde' форма успешно
пройдёт валидацию. Результат выполнения кода:
valid
Пример
Давайте зададим собственное сообщение об ошибке:
from flask import Flask, render_template, request
from wtforms import Form, StringField
from wtforms.validators import AnyOf
app = Flask(__name__)
class MyForm(Form):
choice = StringField('choice', [AnyOf(['abcde', 'article'], message='invalid value')])
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm(request.form)
if request.method == 'POST' and form.validate():
return 'valid'
return render_template('index.html', form=form)
Давайте создадим шаблон для вывода формы и ошибок:
<form method="post">
{{ form.choice.label }} {{ form.choice() }}
{% for error in form.choice.errors %}
<p>{{ error }}</p>
{% endfor %}
<input type="submit">
</form>
При отправке значения 'hello' форма не пройдёт
валидацию, и будет выведено сообщение об ошибке:
invalid value
Смотрите также
-
правило
NoneOf,
которое проверяет, что значение не входит в список -
правило
Regexp,
которое проверяет значение по регулярному выражению -
правило
Length,
которое проверяет длину строки -
правило
DataRequired,
которое проверяет, что поле не пустое