内容介绍
由于继承Django的User列表会导致创建新用户的密码为明文,导致无法正常登陆,因此需要修改部分内容。
models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
# 定义用户信息列表
class UserProfile(AbstractUser):
......
class Meta:
verbose_name = "用户信息列表"
verbose_name_plural = verbose_name
def __str__(self):
return self.username
adminx.py
from django.contrib.auth import get_user_model
import xadmin
from django.contrib.auth.forms import (UserCreationForm, UserChangeForm,
AdminPasswordChangeForm, PasswordChangeForm)
from django.contrib.auth.forms import UserCreationForm, UsernameField
from .models import *
# 获取全局user模型
User = get_user_model()
# 自定义用户创建表单,若不使用此表单,创建用户时会导致密码保存为明文
class MyUserCreationForm(UserCreationForm):
class Meta:
model = User
fields = ("username", "user_role")
field_classes = {
"username": UsernameField, }
# 定义用户使用信息
class UserProfileAdmin(object):
list_display = ['username', 'date_joined', 'nick_name']
show_bookmarks = False
# 配置表单
def get_model_form(self, **kwargs):
if self.org_obj is None:
self.form = MyUserCreationForm
else:
self.form = UserChangeForm
return super(UserProfileAdmin, self).get_model_form(**kwargs)
xadmin.site.unregister(UserProfile)
xadmin.site.register(UserProfile, UserProfileAdmin)
效果演示
从这样的界面进入注册用户的密码就是加密的密码效果了,否则是显示明文。