Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.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
Python django不显示表单错误_Python_Django - Fatal编程技术网

Python django不显示表单错误

Python django不显示表单错误,python,django,Python,Django,当用户试图使用错误信息登录/注册时,我试图显示错误 我有此代码,但浏览器中不显示错误 我在学习Django时完成的另一个项目中编写了这段代码,但现在它不起作用了 她的是我项目的代码 views.py: def loginPage(request): if request.user.is_authenticated: return redirect('/') form = loginForm(request.POST or None) if form.is

当用户试图使用错误信息登录/注册时,我试图显示错误

我有此代码,但浏览器中不显示错误

我在学习Django时完成的另一个项目中编写了这段代码,但现在它不起作用了

她的是我项目的代码

views.py:

def loginPage(request):
    if request.user.is_authenticated:
        return redirect('/')

    form = loginForm(request.POST or None)
    if form.is_valid():
        username = form.cleaned_data.get('username')
        password = form.cleaned_data.get('password')
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('/')

    content = {
        "form": loginForm,
        "title": "Login",
    }
    return render(request, 'login.html', content)

#---------------------------------------------

def registerPage(request):
    if request.user.is_authenticated:
        return redirect('/')
    form = registerForm(request.POST or None)

    content = {
        "form": registerForm,
        "title": "Register",
    }

    if form.is_valid():
        username = form.cleaned_data.get('username')
        email = form.cleaned_data.get('email')
        password = form.cleaned_data.get('password')
        password2 = form.cleaned_data.get('password2')
        User.objects.create_user(username=username, email=email, password=password)
        return redirect('/')

    return render(request, 'register.html', content)
forms.py:

class loginForm(forms.Form):
    username = forms.CharField(widget=forms.TextInput(attrs={
        "class": "form-control",
    }))
    password = forms.CharField(widget=forms.PasswordInput(attrs={
        "class": "form-control",
    }))


class registerForm(forms.Form):
    username = forms.CharField(widget=forms.TextInput(attrs={
        "class": "form-control",
    }))
    email = forms.EmailField(widget=forms.EmailInput(attrs={
        "class": "form-control",
    }))
    password = forms.CharField(widget=forms.PasswordInput(attrs={
        "class": "form-control",
    }))
    password2 = forms.CharField(widget=forms.PasswordInput(attrs={
        "class": "form-control",
    }), label='Password Confirm')

    def clean_username(self):
        user_name = self.cleaned_data.get("username")
        user_exists = User.objects.filter(username=user_name).exists()
        if user_exists:
            raise forms.ValidationError("Username is in user")
        return user_name

    def clean_email(self):
        email = self.cleaned_data.get('email')
        if User.objects.filter(email=email).exists():
            raise forms.ValidationError('Email is in use!!')
        return email

    def clean_password2(self):
        pass1 = self.cleaned_data.get('password')
        pass2 = self.cleaned_data.get('password2')
        if pass1 != pass2:
            raise forms.ValidationError('Passwords does not match')
        return pass2
html(用于注册,但登录方式相同):


{{title}}

{%csrf_令牌%} {%form.username.errors%中的错误}

{{error}

{%endfor%} {%form.email.errors%}

{{error}

{%endfor%} {%form.password.errors%}

{{error}

{%endfor%} {form.password2.errors%%中的错误为%1}

{{error}

{%endfor%} {{form.username.label} {{form.username}
{{form.email.label} {{form.email}
{{form.password.label} {{form.password}}
{{form.password2.label} {{form.password2}}
登录
将未绑定的类添加到上下文中
loginForm
-

使用绑定表单
form=registerForm(request.POST)
form.is\u valid()

因此,在您的视图中更改您的:

“表单”:登录信息表单
“表单”:表单


“表单”:注册执行
“表单”:表单

您添加到上下文中的未绑定类
loginForm
-

使用绑定表单
form=registerForm(request.POST)
form.is\u valid()

因此,在您的视图中更改您的:

“表单”:登录信息表单
“表单”:表单


“form”:registerForm
改为
“form”:form

改为
“form”:loginForm
使用
“form”:form
和您的注册表页中的相同内容:
“form”:registerForm
“form”:form
我犯了多大的错误。谢谢你改为
“form”:loginForm
使用
“form”:form
和你的注册表页面中的相同内容:
“form”:registerForm
“form”:form
我犯了多大的错误。非常感谢。
    <div class="container">
        <div class="row justify-content-center">
            <h3 class="text-center">{{ title }}</h3>
            <hr>
            <div class="col-md-4">
                <form method="post">
                    {% csrf_token %}
                    {% for error in form.username.errors %}
                        <p style="color: red">{{ error }}</p>
                    {% endfor %}

                    {% for error in form.email.errors %}
                        <p class="bg-danger text-light">{{ error }}</p>
                    {% endfor %}

                    {% for error in form.password.errors %}
                        <p class="bg-danger text-light">{{ error }}</p>
                    {% endfor %}

                    {% for error in form.password2.errors %}
                        <p class="bg-danger text-light">{{ error }}</p>
                    {% endfor %}

                    <label for="{{ form.username.id_for_label }}">{{ form.username.label }}</label>
                    {{ form.username }}
                    <br>

                    <label for="{{ form.email.id_for_email }}">{{ form.email.label }}</label>
                    {{ form.email }}
                    <br>

                    <label for="{{ form.password.id_for_label }}">{{ form.password.label }}</label>
                    {{ form.password }}
                    <br>

                    <label for="{{ form.password2.id_for_label }}">{{ form.password2.label }}</label>
                    {{ form.password2 }}

                    <hr>
                    <div class="d-grid gap-2">
                        <button type="submit" class="btn btn-outline-success">Login</button>
                    </div>
                </form>
            </div>
        </div>
    </div>