当使用django rest frame工作时,modlerserializers密码不会被哈希处理

时间:2014-06-24 06:02:38

标签: django django-rest-framework

如果我使用django-rest-framework中的ModelSerializer类,我如何确保密码被哈希?因为调用modelSerializer.save()不会哈希称为'password'的字段?有没有办法指定一个字段需要在“Meta:”中进行哈希?

2 个答案:

答案 0 :(得分:0)

要做这种转变,你可以做两件事:

  • 在验证时使用validate_xxx更改字段值(请参阅docs
  • 如果您多次使用此类行为,请创建custom field定义。

如果您正在讨论Django用户模型,则可以在序列化程序中定义pre_save方法,该方法调用User.set_password

答案 1 :(得分:0)

我最终修改了未序列化的请求对象并在我序列化之前散列密码django使用make_password使这很容易

    def prehash(self, request):            
        password = request.DATA['password']
        password = make_password(password)
        request = request.DATA
        request = request.copy()
        request.update({'password':password})
        return request