django 用户管理系列:1 user

本文介绍如何使用Django创建普通用户及超级用户,并演示了如何更新密码及进行用户验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 

 


user

user 对象是授权系统的核心、用户可以分成两类 1):superuser 2):staff;下面是user表的结构

create table auth_user (
    /*
    用户
    */
    id           int(11)              not null auto_increment,
    password     varchar(128)         not null,
    last_login   datetime(6)          DEFAULT NULL,
    is_superuser tinyint(1)           not null,
    username     varchar(150)         not null,
    first_name   varchar(30)          not null,
    last_name    varchar(150)         not null,
    email        varchar(254)         not null,
    is_staff     tinyint(1)           not null,
    is_active    tinyint(1)           not null,
    date_joined  datetime(6)          not null,

    primary key (id),
    unique  key username (username)
)
  1. 创建用户

    通过user.objects.create_user方法创建用户

    import django
    django.setup()
    
    from django.contrib.auth.models import User
    
    u = User.objects.create_user('jianglegege','127.0.0.1@qq.com','mypassword')
    

    数据库的user表保存如下行

    select  * from auth_user \G
    *************************** 1. row ***************************
              id: 1
        password: pbkdf2_sha256$100000$qOjRhC0Rrzfe$IyyhAkh31+tlPs/YrK+3HwQXupbyKWNE5ouDdDd97xg=
      last_login: NULL
    is_superuser: 0
        username: jianglegege
      first_name: 
       last_name: 
           email: 127.0.0.1@qq.com
        is_staff: 0
       is_active: 1
     date_joined: 2018-05-24 04:58:38.617093
    1 row in set (0.00 sec)      
    

    现给出源码中create_user的原型:

    class UserManager(BaseUserManager):
        use_in_migrations = True
    
        def _create_user(self, username, email, password, **extra_fields):
            """
            Create and save a user with the given username, email, and password.
            """
            if not username:
                raise ValueError('The given username must be set')
            email = self.normalize_email(email)
            username = self.model.normalize_username(username)
            user = self.model(username=username, email=email, **extra_fields)
            user.set_password(password)
            user.save(using=self._db)
            return user
    
        def create_user(self, username, email=None, password=None, **extra_fields):
            extra_fields.setdefault('is_staff', False)
            extra_fields.setdefault('is_superuser', False)
            return self._create_user(username, email, password, **extra_fields)  
            
    

    建议在创建user对象时把指定参数名、这样比较好理解

    u = User.objects.create_user(username='neeky',email='127.0.0.1@qq.com',password='mypassword')
    

  2. 创建超级用户

    超级用户可以在命令行中创建

    python3 manage.py createsuperuser --username=admin --email=127.0.0.1@qq.com
    
    Password:
    Password (again):
    

    Django会提示输入密码和确认密码,数据库中针对超级用户会保存如下信息:

    *************************** 3. row ***************************
              id: 3
        password: pbkdf2_sha256$100000$rHeJUU5jdYjk$iV+n2op/EfHj1jmvHQSwKiNusWsg2Xt+L5as4hJhdTU=
      last_login: NULL
    is_superuser: 1
        username: admin
      first_name: 
       last_name: 
           email: 127.0.0.1@qq.com
        is_staff: 1
       is_active: 1
     date_joined: 2018-05-24 05:17:09.110324
    3 rows in set (0.00 sec)
    
  3. 更新密码

    由上面的内容可以知道django对用户密码是取胜密文保存的、人肉计算加密串是不现实的、所以还是要通过django提供的接口来修改密码;django提供了两种修改密码的方式 1):命令行 2):user对象的set_password()方法

    1)、命令行方式:

    python3 manage.py changepassword admin 
    Changing password for user 'admin'
    Password: 
    Password (again): 
    Password changed successfully for user 'admin'
    

    2)、实例方法:

    import django
    django.setup()
    
    from django.contrib.auth.models import User
    u = User.objects.get(username='admin')
    u.set_password('127.0.0.1@password')
    u.save()
    
  4. 用户验证

    django 通过authenticate函数完成用户验证

    def authenticate(request=None, **credentials):
        """
        If the given credentials are valid, return a User object.
        """
        for backend, backend_path in _get_backends(return_tuples=True):
            try:
                user = _authenticate_with_backend(backend, backend_path, request, credentials)
            except PermissionDenied:
                # This backend says to stop in our tracks - this user should not be allowed in at all.
                break
            if user is None:
                continue
            # Annotate the user object with the path of the backend.
            user.backend = backend_path
            return user
    
        # The credentials supplied are invalid to all backends, fire signal
        user_login_failed.send(sender=__name__, credentials=_clean_credentials(credentials), request=request)
    
    

    由上面定义可知在验证成功后会返回一个User类的实例、如果没有成功会返回一个None值

    from django.contrib.auth import authenticate
    u = authenticate(username='admin',password='127.0.0.1@password')
    if u != None:
        print(u.username) # admin
    else:
        print('error')
    

    注意:request参数是可选的

转载于:https://www.cnblogs.com/JiangLe/p/9082637.html

内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值