當嘗試使用登錄和注冊創建一個簡單的網頁時,我遇到了 django 無法識別創建的用戶的問題。在views.py 中,我創建了一條簡單的訊息,如果用戶不存在,則顯示“密碼或電子郵件不正確”。我創建了一個用戶,并在我將密碼輸入登錄表單時確保密碼正確,但它仍然給我“密碼或電子郵件不正確”的訊息。如果它出錯并且我無法弄清楚它為什么不接受表單中的密碼/電子郵件,而不是像創建的用戶一樣重定向到主頁。
視圖.py
from django.shortcuts import redirect, render
from django.contrib.auth import authenticate, login, logout
from django.contrib import messages
from django.contrib.auth.models import User
def home(request):
return render(request, 'home.html')
def signup(request):
if request.method == "POST":
email = request.POST['email']
password = request.POST['password']
myuser = User(email=email)
myuser.set_password(password)
myuser.save()
messages.success(request, "Your account has been successfully created ")
return redirect('signin')
return render(request, 'signup.html')
def signin(request):
if request.method == "POST":
email = request.POST['email']
password = request.POST['password']
user = authenticate(request, email = email, password = password)
if user is not None:
login(request, user)
email = user.email
messages.success(request, "Successfully Logged In")
return redirect ('home')
else:
messages.info(request, "Email or Password is Incorrect")
return render(request, 'signin.html')
return render(request, 'signin.html')
def signout(request):
pass
網址.py
from django.urls import path
from . import views
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns = [
path('', views.home, name = "home"),
path('signin', views.signin, name = "signin"),
path('signup', views.signup, name = "signup"),
]
urlpatterns = staticfiles_urlpatterns()
注冊.html
<h1>Sign up</h1>
<form action = "/signup" method = "POST">
{% csrf_token %}
<div class="mb-3">
<label for="exampleInputEmail1" class="form-label">Email address</label>
<input type="email" class="form-control" id="email" name = "email" aria-describedby="emailHelp" placeholder = "[email protected]">
<div class="mb-3">
<label for="exampleInputPassword1" class="form-label">Password</label>
<input type="password" class="form-control" id="password" name = "password">
</div>
<button type="submit" class="btn btn-primary">Sign up</button>
</form>
signin.html(登錄頁面)
<h1>Login</h1>
{%if messages%}
{%for message in messages%}
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<strong>Hey,</strong> {{ message }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endfor %}
{% endif %}
<form action = "/signin" method = "POST">
{% csrf_token %}
<div class="row mb-3">
<label for="inputEmail3" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="email" name = "email">
</div>
</div>
<div class="row mb-3">
<label for="inputPassword3" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id = "password" name = "password">
</div>
<div class="col-sm-10">
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
uj5u.com熱心網友回復:
您的用戶的狀態是什么。非活動用戶是其 is_active 欄位設定為 False 的用戶。默認后端ModelBackend和RemoteUserBackend禁止非活動用戶進行身份驗證。您沒有指定用戶狀態。所以也請檢查用戶狀態。
uj5u.com熱心網友回復:
您可以按以下方式改進這部分:
myuser = User(email=email, is_active=True)
myuser.set_password(password)
myuser.save()
要設定密碼,您必須使用set_password功能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/406310.html
標籤:
上一篇:Laravel7-角色和權限
