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

Django使用ModelForm实现注册功能时出现无效密码格式或未知哈希算法错误

问题根源

Django 内置的 User 模型要求密码必须经过哈希加密后再存储,你当前直接使用 ModelForm 的默认 save 逻辑,会将用户提交的明文密码直接写入数据库,不符合 Django 的密码存储规则,因此后台会提示密码格式无效。

修复方法

在你的 UserSignUpForm 表单类中添加重写的 save 方法,调用 Django 封装好的 set_password 方法自动完成密码哈希加密,代码如下:

class UserSignUpForm(forms.ModelForm):
    # 你原有写的__init__、字段定义、Meta、clean方法等内容保持不变
    # 新增以下save方法
    def save(self, commit=True):
        user = super(UserSignUpForm, self).save(commit=False)
        # 将明文密码加密后再赋值给user对象
        user.set_password(self.cleaned_data["password"])
        if commit:
            user.save()
        return user

注意事项

  • 原有视图代码不需要做任何修改,表单的 save 方法重写后,视图中调用 form.save() 时会自动走加密逻辑
  • 你的密码一致性校验逻辑无需调整,只要确保两次密码一致后 cleaned_data 中能正常取到 password 字段即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 20:51:01