簡體   English   中英

為什么我的登錄驗證不起作用? 這段代碼既沒有將我重定向到任何地方,也沒有向我顯示任何錯誤

[英]why my login authentication is not working ? this code is neither redirecting me anywhere nor showing me any error

def login(request):
    if request.method=='POST':
        user = auth.authenticate(username=request.POST['username'],password=request.POST['password1'])
        if user is not None:
            auth.login(request,user)
            return redirect('../')

        else:
            return render(request,'login.html',{'error':'username or password is wrong'})

    else:
        return render(request,'login.html')

您需要定義要傳遞給模板的登錄表單。

例如:

表格.py

class LoginForm(forms.Form):
    username = forms.CharField(label='Your Email/Username', max_length=100)
    password = forms.CharField(label='Your Password', max_length=100)

然后在您的 views.py 中,您可以將視圖函數定義為:

視圖.py

from .forms import LoginForm
def login(request):
    if request.method == "POST":
        if form.is_valid:
            user = auth.authenticate(username=request.POST['username'],password=request.POST['password1'])
            if user is not None:
                auth.login(request,user)
                return redirect('../')
            else:
                return render(request,'login.html',{'form': form, 'error':'username or password is wrong'})
    else:
        form = LoginForm()
        return render(request,'login.html', {'form': form})

然后在您的模板中,您可以將表單呈現為:

<form method="post">
{% csrf_token %}
    {{ form.as_p }} <--render the form in other ways as preferred-->
{% for error in form.errors %} //for displaying the fields where errors have occured
    {{ error }}
{% endfor %}
<button type="submit">Login</button>
</form>

您可以使用 django 內置的登錄視圖:-

在 urls.py 中

from django.contrib.auth.views import LoginView

urlpatterns =[
path('login/' , LoginView.as_view(template_name='login.html') , name ='login') 
 ]

在你的 login.html 中

  <h1> login page!! </h1>
   <form method='POST'>
   {% csrf_token %}
   {{ form.as_p }}
   <input type='submit' value='Login'>
   </form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM