我正在尝试从基类UserCreationForm创建在django中添加电子邮件字段的注册表单。代码为
form.py
class signup(UserCreationForm):
email=forms.EmailField()
class Meta:
model=User
fields=('username','email','password1','password2')
def save(self, commit=True):
user = super(UserCreationForm, self).save(commit=False)
user.email=(self.cleaned_data["email"])
if commit:
user.save()
return user
view.py
def signup(request):
if request.method=='POST':
form=signup(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/rgsuc')
args={}
args.update(csrf(request))
args['form']=signup()
return render_to_response('register.html',args)
urls.py
url(r'^accounts/signup',signup),
错误
\view.py in signup, line 75
signup() takes exactly 1 argument (0 given)
我尝试了这个视频教程here
答案 0 :(得分:2)
代码对视图(def signup(request):
)和表单类(class signup(UserCreationForm)
)使用相同的名称;因为signup
调用视图调用视图本身,而不是表单类。
使用不同的名称。
答案 1 :(得分:0)
好吧,正如错误所说,您的问题是,当您已经定义args['form']=signup()
时,您调用了def signup(request):
,您声明希望signup
函数接收请求。如果您尝试从form.py创建一个注册对象,首先需要添加(在view.py的顶部)import form
,然后将其称为form.signup()
,这应该有效,我相信。