【发布时间】:2018-03-26 10:08:52
【问题描述】:
我收到一个错误,TypeError:Unicode 对象必须在散列之前进行编码。 我写了代码,
user = Data()
passwd = request.data['password']
md5 = hashlib.md5()
md5.update(passwd)
user.password = md5.hexdigest()
print(user.password)
user.save()
追溯 说
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
response = get_response(request)
File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 128, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/rest_framework/viewsets.py", line 95, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 494, in dispatch
response = self.handle_exception(exc)
File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 454, in handle_exception
self.raise_uncaught_exception(exc)
File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 491, in dispatch
response = handler(request, *args, **kwargs)
File "/opt/project/app/views.py", line 27, in create
md5.update(passwd)
我在代码顶部添加了#coding:utf-8,但发生了同样的错误。我的代码有什么问题?我应该如何解决这个问题?
【问题讨论】:
-
相关:stackoverflow.com/questions/7585307/…,stackoverflow.com/questions/27519306/…。请注意,
# -*- coding: utf-8 -*-定义了源文件的编码,并且是 redundant in Python 3,因为它默认为 utf-8。 -
使用 md5 作为密码哈希算法可能是个坏主意。查看此问题了解详情:security.stackexchange.com/questions/19906/…