WTForms: installez «email_validator» pour la prise en charge de la validation des e-mails

15

Obtention d'une exception lors de l'exécution du code suivant pour la validation du formulaire.

File "/Users/homeduvvuri/Documents/Learning/PartyGoUdemy/PartGo/user/forms.py", line 11, in BaseUserForm
    email = EmailField('Email', [validators.DataRequired(), validators.Email()])
File "/Users/homeduvvuri/Documents/Learning/PartyGoUdemy/PartGo/partgo-env/lib/python3.7/site-packages/wtforms/validators.py", line 332, in __init__
    raise Exception("Install 'email_validator' for email validation support.")
Exception: Install 'email_validator' for email validation support.

Fonctionne parfaitement sur codeanywhere VM. Ne fonctionne pas sur la machine locale.

from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed
from wtforms import Form, StringField, PasswordField, validators, ValidationError
from wtforms.validators import InputRequired, Email
from wtforms.fields.html5 import EmailField
from wtforms.widgets import TextArea
from user.models import User

class BaseUserForm(FlaskForm):
    name = StringField('Name', [validators.DataRequired(), validators.Length(min=2, max=30)])
    email = EmailField('Email', [validators.DataRequired(), validators.Email()])
VeeDuvv
la source
La trace de la pile peut utiliser une mise en forme.
Sid

Réponses:

16

Si vous jetez un œil au fichier wtforms / validators.py à la ligne 9:

import email_validator

Installez simplement le package:

pip install email_validator
ivan_filho
la source
2
Même l'exception rend la solution claire:Exception: Install 'email_validator' for email validation support.
dspencer
Mon mauvais ppl .. J'étais curieux de savoir pourquoi il a explicitement demandé de le faire sur mon instance locale alors qu'il ne l'a pas fait sur mon vm. essayait de comprendre comment anticiper et éviter de telles erreurs inter-machines / plates-formes depuis le début.
VeeDuvv
2
J'ai rencontré le même problème aujourd'hui même, où l'application fonctionne correctement sur mon local mais génère cette erreur sur la machine virtuelle. WTForms a publié aujourd'hui une nouvelle version 2.3.1 qui a cassé les choses. Revenir à 2.2.1 l'a corrigé pour moi.
absk
4

Si vous souhaitez l'installer avec wtforms:

pip install wtforms[email]
munsu
la source
3

J'ai eu le même problème avec les dernières mises à jour, j'ai essayé d'installer email_validator et flask-validator et j'ai continué avec cette exception. Résolu en ajoutant dans requirements.txt la ligne suivante: email-validator == 1.0.5 comme suggéré [ici]. ( Https://github.com/alphagov/notifications-admin/commit/5ce2906c5aa6d16 )

CelioMarcos
la source
résolu mon problème
Andrzej O