• Django create_user with is_active=False


    下面的内容来自官方文档
    is_active

    布尔值。指示用户的账号是否激活。我们建议把这个标记设置为False 来代替删除账号;这样的话,如果你的应用和User 之间有外键关联,外键就不会失效。

    它不是用来控制用户是否能够登录。认证的后端没有要求检查is_active 标记,而且默认的后端不会检查。如果你想在is_activeFalse 时拒绝用户登录,你需要在你自己的视图或自定义的认证后端中作检查。但是,默认的login() 视图使用的AuthenticationForm 却会 作这个检查,正如在Django 的Admin 站点中所做的权限检查方法如has_perm() 和认证一样。对于未激活的用户,所有这些函数/方法都返回False

    这里要说的就是将is_active设置为False,来阻止刚 注册的用法登陆

                password = password1
                user_profile = UserProfiles()
                user_profile.username = user_name
                user_profile.email = user_name
                user_profile.is_active = False
                user_profile.password = make_password(password)
                user_profile.save()
    

     这里是第一种比较笨办法中的一段代码: 简单粗暴,直接实例化一个对象将其is_active设置为False

    但是Django自带的auth模块中有更简单的办法, create_user

    看下面源码:

        def create_user(self, email, password=None, **extra_fields):
    
            is_staff = extra_fields.pop('is_staff', False)
            return self._create_user(email=email, password=password, 
                                     is_staff=is_staff, is_superuser=False,
                                     **extra_fields)
    

     很显然, 常见的字段只有email, password, is_staff, is_supersuer etc. 但是还有一个**extra_fields,

    关键就在这个extra_fields中,它可以指定其它所有的字段的值.

    下面对上面笨办法的一个补充:

                UserProfiles.objects.create_user(username=user_name, password=password1, is_active=False)
    

     这里的UserProfiles 和上面的UserProfiles都是自定义的继承自User的Model,如果你没有重写User,这里需要先导入User

    from django.contrib.auth.models import User
    User.objects.create_user(username=user_name, password=password1, is_active=False) # 并改成这样

     同样的道理,其它字段也可以自己指定.

  • 相关阅读:
    Mybatis如何插入空字段
    为什么要将action实例设置为多例
    hibernate dynamic-update="true"属性不起作用原因(转载)
    查找到匹配的进程并关闭 linux ps -ef
    Mac 下解决修改IntelliJ IDEA 由于修改配置之后无法启动问题
    再聊移动端页面的适配
    重学前端
    前端面试
    使用Flexible实现手淘H5页面的终端适配
    vue-cli3.0 使用px2rem 或 postcss-plugin-px2rem
  • 原文地址:https://www.cnblogs.com/Andy963/p/8551458.html
Copyright © 2020-2023  润新知