【发布时间】:2014-06-25 07:02:01
【问题描述】:
如果我使用 django-rest-framework 中的 ModelSerializer 类,我如何确保对密码进行哈希处理?因为调用 modelSerializer.save() 不会散列名为“密码”的字段?有没有办法指定一个字段需要在“Meta:”中进行散列?
【问题讨论】:
标签: django django-rest-framework
如果我使用 django-rest-framework 中的 ModelSerializer 类,我如何确保对密码进行哈希处理?因为调用 modelSerializer.save() 不会散列名为“密码”的字段?有没有办法指定一个字段需要在“Meta:”中进行散列?
【问题讨论】:
标签: django django-rest-framework
要进行这种转换,您可以做两件事:
validate_xxx 更改字段值(参见docs)如果您谈论的是 Django 用户模型,您可以在调用 User.set_password 的序列化程序上定义一个 pre_save 方法。
【讨论】:
我最终修改了未序列化的请求对象并在序列化之前对密码进行哈希处理,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
【讨论】: