【问题标题】:Django raise not getting calledDjango raise 没有被跟注
【发布时间】:2018-07-24 15:19:20
【问题描述】:
    //forms.py :

//这是我的应用程序的表单部分。

    from django import forms
    from django.contrib.auth import (
    authenticate,
    login,
    get_user_model,
    logout,
    )

    User=get_user_model()

    class UserLoginForm(forms.Form):
        username=forms.CharField()
        password=forms.CharField(widget=forms.PasswordInput)

        def clean(self):
            username=self.cleaned_data.get('username')
            password=self.cleaned_data.get('password')
            user=authenticate(username=username,password=password)
            if not user:
                raise forms.ValidationError("This user does not exist")

            if not user.check_password(password):
                raise forms.ValidationError("Incorrect password")

            if not user.is_active:
                raise forms.ValidationError("This user is no longer active")

            return super(UserLoginForm,self).clean()

   // views.py :

//views部分在哪里,我使用了表单中创建的UserLoginForm。

    from django.shortcuts import render
    from django.contrib.auth import (
    authenticate,
    login,
    get_user_model,
    logout,
    )
    from .forms import UserLoginForm

    def login_view(request):
        if request.method=='POST':
            form=UserLoginForm(request.POST or None)
            if form.is_valid():
                username=form.cleaned_data.get("username")
                password=form.cleaned_data.get("password")
                return render(request,"accounts/home.html")
        else:
            form=UserLoginForm()

        return render(request,"accounts/login.html",{"form":form})

    def register_view(request):
        return render(request,"form.html",{})

    def logout_view(request):
        return render(request,"form.html",{})


    //login.html :

//login.html 作为主页打开。

    <div>
    <form method='POST' action=''>{% csrf_token %}
    <input type="text" name="username" placeholder="Username"/>
    <input type="password" name="password" placeholder="Password"/>
    <input type="submit" value="Login"/>
    </form>
    </div>

没有错误,但是在无效的 //stuff 上既不会显示引发错误,也不会在有效用户上重定向到 home.html。请帮我解决问题。我找不到问题。

【问题讨论】:

    标签: django authentication django-forms django-views django-login


    【解决方案1】:

    请@987654321@显示错误信息...

    <form method='POST' action=''>{% csrf_token %}
        {{ form.non_field_errors }}
        <input type="text" name="username" placeholder="Username"/>
    

    【讨论】:

    • 谢谢@Raja Simon,我试过你的方法,它适用于非用户,但即使是用户也被拒绝访问,说用户不存在。
    • @adityakuppa 它应该可以工作。创建一个测试帐户并自行测试?
    猜你喜欢
    • 1970-01-01
    • 2020-03-09
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    相关资源
    最近更新 更多