可以使用Django的内置检查功能并自定义错误消息来实现。以下是实现该功能的示例代码:
from django.contrib.auth import authenticate
from django.contrib.auth.models import User
from django import forms
class UniqueEmailAuthenticationForm(forms.Form):
email = forms.EmailField(label='Email')
password = forms.CharField(label='Password', widget=forms.PasswordInput)
def clean_email(self):
email = self.cleaned_data['email']
try:
User.objects.get(email=email)
except User.DoesNotExist:
return email
raise forms.ValidationError('该电子邮件地址已被使用。')
def clean(self):
email = self.cleaned_data.get('email')
password = self.cleaned_data.get('password')
user = authenticate(email=email, password=password)
if not user:
raise forms.ValidationError('电子邮件地址或密码不正确,请重试。')
if not user.is_active:
raise forms.ValidationError('该账户被禁用。')
return self.cleaned_data
这个示例代码展示了如何创建一个表单,验证邮件地址是否唯一以及如何自定义错误消息。使用这个表单时,只需将它作为视图函数的参数传入即可。在视图函数中,如果表单验证通过,则可以进行进一步的操作。