Django身份验证失败

时间:2020-10-18 19:45:06

标签: django django-views django-authentication

我尝试为我的应用程序创建登录页面,但是无论我尝试一周如何,都无法对用户进行身份验证。

这是我的代码:

views.py

from django.shortcuts import render, HttpResponseRedirect
from django.urls import reverse
from django.contrib.auth import login, logout, authenticate
from django.db import IntegrityError
from .models import User

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)
            return HttpResponseRedirect(reverse("index"))
        else:
            return render(request, "login.html", {"message": f"{user}"})
        return HttpResponseRedirect(reverse("login"))
    else:
        return render(request, "login.html")

models.py

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    pass

urls.py

from django.urls import path
from .views import index, login_view, register

urlpatterns = [
    path("", index, name="index"),
    path("login", login_view, name="login"),
    path("register", register, name="register")
]

login.html

{% extends "layout.html" %}

{% block title %}Login{% endblock %}

{% block content %}
<div class="fluid-container">
    <h3 id="header">Login</h3>
    {% if message %}
        <h4>{{ message }}</h4>
    {% endif %}
    <form method="post" class="form" action="{% url 'login' %}">{% csrf_token %}
        <div class="form-group">
            <input class="form-control" type="text" name="username" placeholder="Username" />
        </div>
        <div class="form-group">
            <input class="form-control" type="password" name="password" placeholder="Password" />
        </div>
        <div class="form-group">
            <input class="btn btn-primary" type="submit" value="Login" />
        </div>
    </form>
    <p>Don't have an account? <a href="{% url 'register' %}">Register one here.</a></p>
</div>
{% endblock %}

用户始终为“无”,但用户名和密码会正确返回。

0 个答案:

没有答案