无法使用 Django 中的普通用户帐户登录

如何解决无法使用 Django 中的普通用户帐户登录

我正在开发具有个性化用户模型的应用。我可以使用超级用户登录,但是当我尝试使用普通用户时,出现密码和用户名错误的错误。
查看用户的数据,发现普通用户的密码没有经过hash。

模型定义models.py

from django.db import models
from django.contrib.gis.db import models
from phonenumber_field.modelfields import PhoneNumberField
from django.contrib.gis.db import models as gis_models
from django.contrib.auth.models import AbstractBaseUser,PermissionsMixin
from .managers import EmployeeManager


class Employee(AbstractBaseUser,PermissionsMixin):
    PERMANENT = 'Per.'
    TEMPORAIRE = 'Tem.'
    VIREMENT = 'Vir'
    ESPECES = 'Esp'
    TYPE_OF_CONTRACT = [
        (TEMPORAIRE,'Temporaire'),(PERMANENT,'Permanent'),]
    PAYMENT_MODE = [
        (VIREMENT,'Virement'),(ESPECES,'Especes'),]
    first_name = models.CharField(max_length=128,blank=False,null=False)
    last_name = models.CharField(max_length=128,null=False)
    registration_number = models.PositiveSmallIntegerField(unique=True,null=False)
    email = models.EmailField()
    driving_licence = models.PositiveIntegerField(blank=True,null=True)
    recruitment_date = models.DateField(auto_now=False,auto_now_add=False,blank=True,null=True)
    phone = PhoneNumberField(blank=True,help_text='numéro de telephone',null=True)
    is_exploitation_admin = models.BooleanField(default=False)
    is_supervisor = models.BooleanField(default=False)
    is_controlor = models.BooleanField(default=False)
    is_driver = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=True)

    USERNAME_FIELD = 'registration_number'
    REQUIRED_FIELDS = ['first_name','last_name','email']

    objects = EmployeeManager()

    def __str__(self):
        return (self.first_name)


class Supervisor(Employee):
    zone_name = models.CharField(max_length=128,blank=True)
    def __str__(self):
        return (self.last_name)

登录的模板是:

{% extends 'Drivers_App_Management/base.html' %}
{% block content %}
<!DOCTYPE html>
<html>

<head>
    <title>Login</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" integrity="sha384-gfdkjb5BdAXd+lj+gudLWI+BXq4IuLW5IT+brZEZsLFm++aCMlF1V92rMkPaX4PP" crossorigin="anonymous">
</head>
<body>
    {% if form.errors %} <p>votre numero et mot de pass sont incorrects</p> {% endif %}
    <div class="container h-100">
        <div class="d-flex justify-content-center h-100">
            <div class="user_card">
                <div class="d-flex justify-content-center">
                    <h3 id="form-title">LOGIN</h3>
                </div>
                <div class="d-flex justify-content-center form_container">
                    <form method="POST" action="{% url 'login' %}">
            {% csrf_token %}
                        <div class="input-group mb-3">
                            <div class="input-group-append">
                                <span class="input-group-text"><i class="fas fa-user"></i></span>
                            </div>
                            {{form.username.label}}
                            {{form.username}}
                        </div>
                        <div class="input-group mb-2">
                            <div class="input-group-append">
                                <span class="input-group-text"><i class="fas fa-key"></i></span>
                            </div>
              {{form.password.label}}
                            {{form.password}}
                        </div>
                        <div class="d-flex justify-content-center mt-3 login_container">
                                <input class="btn btn-primary" type="submit" value="Login">
                                <input type="hidden" name="next" value=" {{ next }} ">
                            </div>
                    </form>
                </div>
                <div class="mt-4">
                    <div class="d-flex justify-content-center links">
                        Don't have an account? <a href="{% url 'Drivers_App_Management:index' %}" class="ml-2">Sign Up</a>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>

</html>

{% endblock %}

更多信息
没有其他错误,并且在服务器中它没有显示任何错误(如您所见):

System check identified 1 issue (0 silenced).
December 24,2020 - 05:53:16
Django version 3.1.3,using settings 'Transport_Project.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[24/Dec/2020 05:54:44] "GET /admin/Drivers_App_Management/driver/add/ HTTP/1.1" 200 39255
[24/Dec/2020 05:54:44] "GET /admin/jsi18n/ HTTP/1.1" 200 3187
[24/Dec/2020 05:57:38] "POST /admin/Drivers_App_Management/driver/add/ HTTP/1.1" 302 0
[24/Dec/2020 05:57:38] "GET /admin/Drivers_App_Management/driver/ HTTP/1.1" 200 34796
[24/Dec/2020 05:57:38] "GET /admin/jsi18n/ HTTP/1.1" 200 3187
[24/Dec/2020 05:58:00] "GET /admin/Drivers_App_Management/employee/add/ HTTP/1.1" 200 15864
[24/Dec/2020 05:58:00] "GET /admin/jsi18n/ HTTP/1.1" 200 3187
[24/Dec/2020 05:59:13] "POST /admin/Drivers_App_Management/employee/add/ HTTP/1.1" 200 16022
[24/Dec/2020 05:59:14] "GET /admin/jsi18n/ HTTP/1.1" 200 3187
[24/Dec/2020 05:59:51] "POST /admin/Drivers_App_Management/employee/add/ HTTP/1.1" 200 16022
[24/Dec/2020 05:59:51] "GET /admin/jsi18n/ HTTP/1.1" 200 3187
[24/Dec/2020 17:07:27] "POST /admin/Drivers_App_Management/employee/add/ HTTP/1.1" 200 16022
[24/Dec/2020 17:07:31] "GET /admin/jsi18n/ HTTP/1.1" 200 3187
[24/Dec/2020 17:08:14] "GET /admin/Drivers_App_Management/controlor/ HTTP/1.1" 200 11909
[24/Dec/2020 17:08:14] "GET /admin/jsi18n/ HTTP/1.1" 200 3187
[24/Dec/2020 17:08:22] "GET /admin/Drivers_App_Management/controlor/274/change/ HTTP/1.1" 200 43329
[24/Dec/2020 17:08:22] "GET /admin/jsi18n/ HTTP/1.1" 200 3187
[24/Dec/2020 17:08:43] "GET /accounts/login/?next=/Drivers_App_Management/cities HTTP/1.1" 200 3533
[24/Dec/2020 17:09:14] "POST /accounts/login/ HTTP/1.1" 200 3599
[24/Dec/2020 17:09:29] "GET /accounts/login/?next=/Drivers_App_Management/gazstations HTTP/1.1" 200 3538
[24/Dec/2020 17:09:49] "GET /Drivers_App_Management/ HTTP/1.1" 200 189
[24/Dec/2020 17:09:52] "GET /accounts/login/?next=/Drivers_App_Management/ HTTP/1.1" 200 3527
[24/Dec/2020 17:10:26] "POST /accounts/login/ HTTP/1.1" 200 3593

更新 ma​​nagers.py 中的用户创建代码:

from django.contrib.auth.base_user import BaseUserManager
from django.utils.translation import ugettext_lazy as _


class EmployeeManager(BaseUserManager):
    def create_user(self,email,first_name,last_name,password,registration_number,**extra_fields):
        if not last_name:
            raise ValueError(_('Le nom est obligatoire'))
        if not first_name:
            raise ValueError(_('Le prenom est obligatoire'))
        user = self.model(email=email,registration_number=registration_number,first_name=first_name,last_name=last_name,password=password,is_staff=is_staff,is_driver=is_driver,is_active=is_active,is_controlor=is_controlor,is_supervisor=is_supervisor,is_exploitation_admin=is_exploitation_admin)
        user.set_password(password)
        user.save()
        return user

    def create_superuser(self,password1,password2,**extra_fields):
        extra_fields.setdefault('is_exploitation_admin',True)
        extra_fields.setdefault('is_supervisor',True)
        extra_fields.setdefault('is_controlor',True)
        extra_fields.setdefault('is_driver',True)
        extra_fields.setdefault('is_superuser',True)
        extra_fields.setdefault('is_staff',True)

        if extra_fields.get('is_staff') is not True:
            raise ValueError(_('Superuser must have is_staff=True.'))
        if extra_fields.get('is_superuser') is not True:
            raise ValueError(_('Superuser must have is_superuser=True.'))
        return self.create_user(email,**extra_fields)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res