繁体   English   中英

django 用户身份验证仅返回无

[英]django user authenticate only returns None

我正在尝试在 Django 上创建一个简单的 API,这是我的第一个。 class 用户获取 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", {})

您可能会将用户 object 与用户名(字符串)进行比较。 尝试这个:

autenticador = authenticate(request, username=user.username, password=senha)

查克这是:-

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", {})

但我不明白你为什么在登录后重定向“管理页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM