0

我正在尝试从基类 UserCreationForm 创建注册表单,在 django 中添加电子邮件字段。代码如下

表格.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

视图.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)

网址.py

 url(r'^accounts/signup',signup),

错误

\view.py in signup, line 75
signup() takes exactly 1 argument (0 given)

我在这里尝试了这个视频教程

4

2 回答 2

2

该代码对视图(def signup(request):)和表单类(class signup(UserCreationForm))使用相同的名称;导致signup视图中的调用调用视图本身,而不是表单类。

使用不同的名称。

于 2013-11-11T04:46:15.850 回答
0

好吧,正如错误所说,您的问题是您调用args['form']=signup(),当您已经定义def signup(request):时,您声明您希望signup函数接受请求。如果您尝试从 form.py 创建一个注册对象,您首先需要添加(在 view.py 的顶部)import form,然后将其称为form.signup(),我相信这应该可以工作。

于 2013-11-11T04:48:47.277 回答