WTForms:安装“email_validator”以支持电子邮件验证

Vee*_*uvv 77 python flask wtforms

运行以下代码进行表单验证时出现异常。

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.
Run Code Online (Sandbox Code Playgroud)

在 codeanywhere VM 上完美运行。不在本地机器上。

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()])
Run Code Online (Sandbox Code Playgroud)

iva*_*lho 79

如果您查看第 9 行中的 wtforms/validators.py 文件:

import email_validator
Run Code Online (Sandbox Code Playgroud)

只需安装软件包:

pip install email_validator
Run Code Online (Sandbox Code Playgroud)

  • 我今天遇到了同样的问题,应用程序在我的本地运行良好,但在虚拟机上抛出此错误。WTForms 今天发布了新版本 2.3.1,该版本破坏了一些东西。返回 2.2.1 为我解决了这个问题。 (5认同)
  • 即使是例外也使解决方案变得清晰:“例外:安装'email_validator'以获取电子邮件验证支持。” (2认同)
  • 我的坏人..我很好奇为什么它明确要求在我的本地实例上这样做,而它没有在我的虚拟机上这样做。从一开始就试图弄清楚如何预测和避免此类跨机器/平台错误。 (2认同)

mun*_*nsu 24

如果你想安装它wtforms

pip install wtforms[email]
Run Code Online (Sandbox Code Playgroud)

  • 我收到消息:未找到匹配项:wtforms[email] (2认同)

Gre*_* Li 13

从 WTForms 2.3.0 版本开始,电子邮件验证由名为email-validator( PR #429 )的外部库处理。如果要启用电子邮件验证支持,则需要安装带有额外要求的 WTForms email

$ pip install wtforms[email]
Run Code Online (Sandbox Code Playgroud)

或者你可以email-validator直接安装:

$ pip install email-validator
Run Code Online (Sandbox Code Playgroud)

或者你可以回到旧版本的 WTForms:

$ pip install wtforms==2.2.1
Run Code Online (Sandbox Code Playgroud)

PS 如果你使用的是 Flask-WTF,除了email-validator直接安装,你还可以使用emailextra (如果PR #423合并) 在下一个版本(> 0.14.3) 中。


小智 7

尝试安装

pip install email-validator
Run Code Online (Sandbox Code Playgroud)


Cel*_*cos 5

我在最新更新中遇到了同样的问题,尝试安装 email_validator 和flask-validator 并继续处理此异常。通过在requirements.txt中添加以下行来解决:按照[此处]的建议,email-validator == 1.0.5。(https://github.com/alphagov/notifications-admin/commit/5ce2906c5aa6d16

实际上 wtforms[email]==2.3.1 是我需要的。


小智 5

当我使用虚拟环境运行它时,这也发生在我身上。anaconda 3.7 但是,当我将项目解释器切换回本地计算机 Python 3.7 时,我运行:

pip 安装 email_validator

效果很好。

我只是觉得很奇怪,我无法在我的 anaconda 项目解释器中安装模块“email_validator”。所以我建议你先尝试使用本地机器。