在分配用户注册表之前引用的局部变量

时间:2013-09-14 21:27:15

标签: python django forms variables

目标:我正在尝试创建一个超级简单的用户注册表单。

我收到错误:local variable 'NewUserRegistrationForm' referenced before assignment

我在 forms.py

中有一个表单
class NewUserRegistrationForm(UserCreationForm):
    username = forms.CharField(required=True,max_length=30,validators=[RegexValidator('^[A-Za-z0-9]{1,30}$','e.g. must be 30 characters or less','Invalid Entry')])
    email = forms.EmailField(required=True, max_length=75)
    password = forms.PasswordInput()
    class Meta:
        model = User
        fields = ("username", "email", "password1","password2")

def save(self, commit=True):
    user = super(NewUserRegistrationForm, self).save(commit=False)
    user.username = self.cleaned_data["username"]
    user.email = self.cleaned_data["email"]
    user.password = self.cleaned_data["password1"]
    if commit:
        user.save()
    return user

form = NewUserRegistrationForm()

views.py

def Registration(request):
    NewUserRegistrationForm = NewUserRegistrationForm(request.POST or None)
    if request.method == 'POST':
        if NewUserRegistrationForm.is_valid():
            NewUserRegistrationForm.save()
            return HttpResponseRedirect("/Login/")

        return render(request, 'my/reuse/register.html', {
            'NewUserRegistrationForm': NewUserRegistrationForm 
        })

我在这里做错了什么?

谢谢

1 个答案:

答案 0 :(得分:0)

这是我的一个超级愚蠢的错误。

我将视图定义切换为:

 def Registration(request):
    MyForm = NewUserRegistrationForm(request.POST or None)
    if request.method == 'POST':
        if MyForm.is_valid():
            MyForm.save()
            return HttpResponseRedirect("/Login/")

    return render(request, 'VA/reuse/register.html', {
        'NewUserRegistrationForm': NewUserRegistrationForm 
    })

return render()必须与if request.method对齐,我必须将表单重命名为NewUserRegistrationForm的表单声明以外的其他内容