Django2 admin 自定义user模型之后,后台添加用户时 密码不会加密的问题

django项目中,当我们创建了user模型类,并生成了超级管理员,之后我们进入到admin后台页面中,添加一个用户,再去login页面登陆时,会提示我们 用户名或密码错误。
那么问题来了,这是为什么呢?
这时,我们第一时间会想到去数据库中查看,就会发现,我们创建的新的用户的密码是明文,而在我们登陆页面传过来的密码都是经过加密的,这当然是对不上了。
在app目录下的admin.py中简单的注册模型类是不行的,我们还需要导入UserAdmin,再新建一个类继承UserAdmin,并在新建的类中添加我们想要显示的内容。

from user.models import User    # 自己创建的模型类
from django.contrib.auth.admin import UserAdmin

class UserInfoAdmin(UserAdmin):
    # 这是在管理页面中想要显示的内容
    list_display = ['username', 'email', 'date_joined', 'last_login']
    # 分页
    list_per_page = 10
    # 设置 只读 的字段
    readonly_fields = ['date_joined', 'last_login']
    # 后台显示的字段
    fieldsets = [
               (None, {'fields':['username', 'password', 'email', 'is_staff', 'is_superuser']}),
               ('用户活跃信息', {'fields': ['date_joined', 'last_login']}),
    ]
# 注册时要将这两个模型类同时注册
admin.site.register(User, UserInfoAdmin)


重新启动项目之后,我们再创建用户,密码就是加密过的了,并且也能正常登陆。 


原创文章,转载请注明出处:http://124.221.219.47/article/3245y/