【发布时间】:2021-01-04 09:55:03
【问题描述】:
我正在尝试将这些错误消息更改为自定义,这里是代码:
>>>forms.py
class UserRegistrationForm(forms.ModelForm):
...
...
...
def clean_email(self):
username = self.cleaned_data['username']
email = self.cleaned_data['email']
users = User.objects.filter(email__iexact=email).exclude(username__iexact=username)
if users:
raise forms.ValidationError("Email's already taken.")
return email.lower()
def clean_username(self):
username = self.cleaned_data['username']
try:
user = User.objects.exclude(pk=self.instance.pk).get(username=username)
except User.DoesNotExist:
return username
raise forms.ValidationError("Username's already taken.")
当我输入已被占用的用户名时,我得到一个错误屏幕:
/account/register/处的 KeyError
'用户名'
请求方法:POST
请求网址:http://127.0.0.1:8000/account/register/
Django 版本:3.1.1
异常类型:KeyError
异常值:“用户名”
异常位置:C:\Users\user\Desktop\esh\myshop\account\forms.py,第 58 行,在 clean_email
而且我不知道如何覆盖无效的电子邮件错误消息。
【问题讨论】:
-
我更改了无效的电子邮件:error_messages = { 'email' : { 'invalid' : '自定义文本。' } }
标签: python django django-forms keyerror