Django表格:逐行验证

时间:2019-02-21 02:29:18

标签: django django-forms

我正在创建一个表单,用户可以在其中输入一堆电子邮件地址。 我想做的是在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
        ...

1 个答案:

答案 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