我使用内置的User模型在我的应用程序中存储用户信息。 但是,在注册新用户时,我希望用户名应该是唯一的。为此,我决定覆盖模型中的clean_username方法。这是我的forms.py文件
from django import forms
from django.contrib.auth.models import User
class Registration_Form(forms.ModelForm):
password=forms.CharField(widget=forms.PasswordInput())
class Meta:
model=User
fields=['first_name', 'last_name', 'username', 'email', 'password']
def clean_username(self):
value=self.cleaned_data['username']
if User.objects.filter(username=value[0]):
raise ValidationError(u'The username %s is already taken' %value)
return value
这是我的views.py文件
from django.shortcuts import render
from django.shortcuts import redirect
# Create your views here.
from django.contrib.auth.models import User
from registration.forms import Registration_Form
def register(request):
if request.method=="POST":
form=Registration_Form(request.POST)
if form.is_valid():
unm=form.cleaned_data('username')
pss=form.cleaned_data('password')
fnm=form.cleaned_data('first_name')
lnm=form.cleaned_data('last_name')
eml=form.cleaned_data('email')
u=User.objects.create_user(username=unm, password=pss, email=eml, first_name=fnm, last_name=lnm)
u.save()
return render(request,'success_register.html',{'u':u})
else:
form=Registration_Form()
return render(request,'register_user.html',{'form':form})
但是,点击表单的提交按钮后,我收到此错误
异常类型:TypeError
例外价值:
'dict'对象不可调用
例外位置:/home/srai/project_x/registration/views.py注册,第12行
有问题的一行是
UNM = form.cleaned_data( '用户名')
任何人都可以告诉我为什么会出现这个错误,我该怎么解决它。 感谢。
答案 0 :(得分:1)
首先,错误与您的自定义清理方法无关,它在视图中发生。
您只需使用方括号来访问dict项,而不是括号:
unm=form.cleaned_data['username']