我正在创建一个表单,用户可以在其中输入一堆电子邮件地址。 我想做的是在TextField中逐行验证电子邮件。
所以我需要做的是逐行阅读输入内容,并为每行应用电子邮件验证程序。
我该怎么办?
我当前的代码(不过,这只是普通的电子邮件表格。.
forms.py
class InputEmailsForm(forms.Form):
email = forms.EmailField()
def __init__(self, *args, **kargs):
super().__init__(*args, **kwargs)
# override label and error messages here
...
答案 0 :(得分:1)
将您的EmailField(仅接受一个地址)转换为TextField,然后编写一个自定义验证函数,该函数使用Django的内置validate_email函数进行检查以确保每一行都包含有效的电子邮件地址:
from django.core.validators import validate_email
from django.core.exceptions import ValidationError
from django import forms
class InputEmailsForm(forms.Form):
emails = forms.TextField()
def clean_emails(self):
data = self.cleaned_data['emails']
for line in data.splitlines():
try validate_email(line):
pass
except ValidationError:
raise forms.ValidationError("The following is not a valid e-mail: {0}".format(line))
return data