代码之家  ›  专栏  ›  技术社区  ›  Dave Merwin

同时创建用户注册和django用户。save方法正在添加用户,而不考虑有效的表单

  •  0
  • Dave Merwin  · 技术社区  · 15 年前

    我有一个团队注册应用程序。用户注册成为团队的一部分。当他们这样做时,视图会添加一个团队成员并将用户添加到auth db中。

    但是,当团队模型返回无效数据时,user.save()方法将添加用户名、密码和电子邮件。

    因此,当用户更正团队注册并单击提交时,他们现在被告知用户名已被使用。

    我希望在团队成员验证后添加用户名等。

    有什么建议吗?

    以下是视图:

    def register(request, **kwargs):
        if request.method == 'POST':
            form = SimpleRegForm(request.POST)
            if form.is_valid():
                username = form.cleaned_data['username']
                email = form.cleaned_data['email']
                password = form.cleaned_data['password1']
                user = User.objects.create_user(username, email, password)
                user.save()
                form.save()
    
                # Send an email to the admin letting them know that a person registered
                subject = render_to_string('teamregistration/email_subject.txt')
                message = render_to_string('teamregistration/email_body.txt',
                                           {'first_name':form.cleaned_data['first_name'], 'last_name':form.cleaned_data['last_name'], 'tbi_region':form.cleaned_data['tbi_region']})
                recipients = ['XXXXXX@XXXXXX.XXX', 'XXXXXX@XXXXXX.XXX']
                send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, recipients)
    
                return HttpResponseRedirect('/tbi-team-register/registration-submitted/')
        else:
            form = SimpleRegForm()
    
        return render_to_response('teamregistration/form.html', {'form':form}, context_instance=RequestContext(request))
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   Dave Merwin    14 年前

    您所要做的就是删除user.save()。