Сбой аутентификации Django

#django #django-views #django-authentication

#django #django-просмотры #django-аутентификация

Вопрос:

Я пытаюсь создать страницу входа в систему для своего приложения, но я не могу аутентифицировать пользователя, что бы я ни пытался в течение недели.

Вот мой код:

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 %}
  

Пользователь всегда None, но имя пользователя и пароль возвращаются правильно.

Комментарии:

1. как пользователь выглядит в базе данных, а также почему вы переопределяете AbstractUser, если вы не вносите никаких изменений

2. @iklinac Что вы имеете в виду, как выглядит пользователь? Функция регистрации работает, вот почему я не упомянул об этом, и поля совпадают с логином, именем пользователя и паролем. Я намерен изменить класс пользователя позже, но сначала я должен иметь возможность войти в систему.

3. как выглядит ваша пользовательская строка в базе данных, особенно интересует пароль

4. Ну, ты открыл мне глаза.. Я просто использовал «User.objects.create_user (имя пользователя, пароль)» в регистре, и это все испортило? Не уверен, почему, хотя изменение его на «User.objects.create_user (имя пользователя = имя пользователя, пароль = пароль)» устраняет проблему.