Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Form.is#u valid()在不应';T_Django_Validation_Django Forms_Django Views_Authentication - Fatal编程技术网

Django Form.is#u valid()在不应';T

Django Form.is#u valid()在不应';T,django,validation,django-forms,django-views,authentication,Django,Validation,Django Forms,Django Views,Authentication,我的看法是: def registerView(request): form = RegistrationForm() if request.method == 'POST': form = RegistrationForm(request.POST) if form.is_valid(): user = User.objects.create_user( username=form.cleaned_data['

我的看法是:

def registerView(request):
    form = RegistrationForm()

    if request.method == 'POST':
        form = RegistrationForm(request.POST)

    if form.is_valid():
        user = User.objects.create_user(
            username=form.cleaned_data['username'],
            password=form.cleaned_data['password1'],
            email=form.cleaned_data['email']
        )

        username=form.cleaned_data['username']
        password=form.cleaned_data['password1']
        user = authenticate(username=username, password=password)
        login(request, user)
        return redirect('/home/') 

    variables = {'registerForm':form}
    return render(request, 'register.html', variables) 
这是我的登记表:

class RegistrationForm(forms.Form):

    username = forms.CharField(label='Username', max_length=30)
    email = forms.EmailField(label='Email')
    password1 = forms.CharField(label='Password', widget=forms.PasswordInput()) 
    password2 = forms.CharField(label='Confirm Password', widget=forms.PasswordInput()) 

def clean_password2(self):
    if 'password1' in self.cleaned_data:
        password1 = self.cleaned_data['password1']
        password2 = self.cleaned_data['password2']
        if password1 == password2:
        return password2
    raise forms.ValidationError('Passwords do not match.')

def clean_username(self):
    username = self.cleaned_data['username']
    if not re.search(r'^\w+$', username):
        raise forms.ValidationError('Username can only contain alphanumeric characters and the underscore.')
    try:
        User.objects.get(username=username) 
    except ObjectDoesNotExist:
        return username 
    raise forms.ValidationError('Username is already taken.')
这是我的模板:

<form method="post" action="/regsiter/">{% csrf_token %}
    <h6>username:</h6>
    {{ registerForm.username }}

    <h6>email</h6>
    {{ registerForm.email }}

    <h6>password:</h6>
    {{ registerForm.password1 }}

    <h6>confirm password:</h6>
    {{ registerForm.password2 }}

    <input type="hidden" name="next" />
    <input type="submit" value="register" />
</form>
{%csrf\u令牌%}
用户名:
{{registerForm.username}
电子邮件
{{registerForm.email}
密码:
{{registerForm.password1}
确认密码:
{{registerForm.password2}

现在由于某种原因,当我转到我的模板,不填写任何内容(保留所有字段为空)并尝试注册时,它会重定向到/home/这意味着它正在将表单标记为有效(如果form.is_valid():出于某种原因返回true),即使所有字段都为空。我甚至尝试使用一个存在的用户名,但它仍然说表单是有效的。知道为什么吗?

表单操作拼写不正确,因此它从未进入
注册表视图。应该是:

<form method="post" action="/register/">


对于表单操作,您是在此处拼写错误,还是在模板上拼写错误?@SunnySydeUp在模板中也拼写错误。。这就是问题所在。谢谢你可以把它作为答案,我会记下来,只是把将来因为拼写错误而出错的人关起来。