【Django3.0功能开发】apps篇:xadmin重写User表单密码明文改加密方法

内容介绍

由于继承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)

效果演示

从这样的界面进入注册用户的密码就是加密的密码效果了,否则是显示明文。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_20288327/article/details/110817966
今日推荐