You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Admin Panel创建新用户时隐藏明文密码?

问题:Django Admin创建用户时密码明文显示

问题详情

在Admin Panel创建新用户并设置密码时,密码以明文形式显示,存在安全风险。

复现步骤

  • 进入Admin Panel
  • 选择创建新用户选项
  • 输入新用户的密码

预期与实际行为

  • 预期行为:密码输入框应隐藏内容,显示为圆点或星号(如********)
  • 实际行为:密码以明文显示

当前admin.py代码

from django.contrib import admin
from django.contrib.auth.hashers import make_password

from user import models


class UserAdmin(admin.ModelAdmin):
    """Define the admin pages for users."""
    ordering = ['id']
    list_display = ['id', 'email', 'name']
    search_fields = ['id', 'name', 'email']
    readonly_fields = ['last_login']

    def save_model(self, request, obj, form, change):
        obj.password = make_password(obj.password)
        obj.user = request.user
        obj.save()


# Register your models here.
admin.site.register(models.User, UserAdmin)

解决方案

要让密码输入框隐藏内容,需自定义表单指定密码字段使用密码输入控件,修改后的代码如下:

from django.contrib import admin
from django.contrib.auth.hashers import make_password
from django import forms
from user import models


class UserAdminForm(forms.ModelForm):
    # 自定义密码字段,使用密码输入控件
    password = forms.CharField(widget=forms.PasswordInput())

    class Meta:
        model = models.User
        fields = '__all__'


class UserAdmin(admin.ModelAdmin):
    """Define the admin pages for users."""
    ordering = ['id']
    list_display = ['id', 'email', 'name']
    search_fields = ['id', 'name', 'email']
    readonly_fields = ['last_login']
    # 绑定自定义表单
    form = UserAdminForm

    def save_model(self, request, obj, form, change):
        obj.password = make_password(obj.password)
        obj.user = request.user
        obj.save()


# Register your models here.
admin.site.register(models.User, UserAdmin)

说明

原代码未指定密码字段的输入控件,Django默认用普通文本框渲染。通过自定义ModelForm给密码字段设置PasswordInput widget,即可让输入框自动隐藏内容为星号/圆点。

若你的User模型继承自AbstractUser,也可直接使用Django内置的UserAdmin替代ModelAdmin,它默认已处理密码输入隐藏逻辑;若需自定义其他功能,上述方法更灵活。

内容的提问来源于stack exchange,提问作者coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 03:52:35