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

Django中Python Secrets模块生成重复密码的原因与解决方法

问题原因

你犯了一个Django模型配置的常见错误:设置default参数时,你写的是generate_password()——这会在Django加载模型类的瞬间就执行一次该函数,把返回的密码当成固定的默认值。

也就是说,只要Django没重启,之后所有创建的用户都会复用这个预先生成的密码;每次重启Django,模型重新加载,函数会再次执行生成新密码,新创建的用户就会用这个新密码。这就是你看到几个密码循环重复的核心原因——每个重复组对应一次Django重启后的会话。

解决办法

把default的值改成函数本身,去掉括号即可:

password = models.CharField(max_length=100, default=generate_password)

Django的字段default参数支持接收可调用对象(比如函数),当需要为新对象生成默认值时,会自动调用这个对象。这样每次创建用户时,都会执行generate_password()生成全新的随机密码,彻底解决重复问题。

另外,你用secrets模块生成密码的方式是安全可靠的,不需要调整,只需要修正default的赋值方式就可以了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:30:50