我正在嘗試在 Django 上創建一個簡單的 API,這是我的第一個。User 類獲取 AbstractUser,如下所示:
from django.db import models
from django.contrib.auth.models import AbstractUser
class Usuario(AbstractUser):
nome = models.CharField(max_length = 255)
username = models.CharField(max_length=150, unique=True, blank=False, null=False, default="")
nascimento = models.DateField()
password = models.CharField(max_length=128, blank=False, null=False, default="")
但是當我嘗試進行身份驗證時,該方法總是回傳 None。為什么?我在資料庫上檢查過,用戶已經在那里了。
from django.shortcuts import render, redirect
from conta.models import Usuario
import secrets
from django.contrib.auth import authenticate, login
def login_view(request):
if request.method == "POST":
user = request.POST.get("user")
senha = request.POST.get("password")
autenticador = authenticate(request, username=user, password=senha)
if autenticador is None:
context = {"error" : "Invalid username or password"}
return render(request, "conta/tela_de_login.html", context)
login(request, autenticador)
redirect('/admin')
return render(request, "conta/tela_de_login.html", {})
uj5u.com熱心網友回復:
您可能正在將用戶物件與用戶名(字串)進行比較。嘗試這個:
autenticador = authenticate(request, username=user.username, password=senha)
uj5u.com熱心網友回復:
查克這是:-
def login_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username = username, password = password)
if user is not None:
login(request, user)
messages.success(request, f' wellcome {username} !!')
return redirect('admin')
else:
messages.warning(request, f'Invalid username or password')
return render(request, "conta/tela_de_login.html", {})
但我不明白你為什么在登錄后重定向“管理頁面”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/368334.html
