Валидатор WTForms Regexp: как сопоставить пробелы в тегах html с помощью регулярного выражения - PullRequest
1 голос
/ 29 мая 2020

У меня есть форма с полем textarea, и мне интересно, могу ли я использовать валидатор WTForms Regexp, чтобы предотвратить отправку формы, когда текстовое поле содержит только пробелы. Есть ли способ?

Это моя форма:

class AddReviewForm(FlaskForm):
    review = TextAreaField("Review", validators=[DataRequired())
    submit = SubmitField("Post Review")

Я надеялся, что Regexp позволит мне запретить использование только пробелов. Мои поля textarea включают CKEditor, который добавляет <p> (или другие теги) к вводу, чтобы отображать его как WYSIWYG.

Таким образом, в базе данных пробелы выглядят следующим образом:

"<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>"

И это не должно подтверждаться.

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Вы можете создать собственный валидатор.

Импорт ValidationError:

from wtforms import ValidationError

Пользовательский валидатор:

def validate_review(self, field):
    text = field.data.replace('<p>','')
                     .replace('</p>','')
                     .replace('&nbsp;','')
                     .replace('&ensp;','')
                     .replace('&emsp;','')
                     .replace('<br>','')
    if not text:
        raise ValidationError('This field should not contain only white spaces')

Убедитесь, что этот пользовательский валидатор метод класса AddReviewForm. Также обратите внимание, что имя метода настраиваемого валидатора должно иметь вид validate_<field_name>.

0 голосов
/ 29 мая 2020

Взгляните на это, я думаю, это может вам помочь:

enter image description here

Here is the ссылка на изображение выше

Как вы можете видеть на изображении выше должно удовлетворять вашему условию:

«если данные являются строковыми, строка, содержащая только символы пробела, считается ложной».

Сообщите мне, работает ли это: D!

...