我尝试为我的应用程序创建登录页面,但是无论我尝试一周如何,都无法对用户进行身份验证。
这是我的代码:
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 %}
用户始终为“无”,但用户名和密码会正确返回。