Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:在散列之前必须对Unicode对象进行编码什么是错误的?_Python_Django - Fatal编程技术网

Python TypeError:在散列之前必须对Unicode对象进行编码什么是错误的?

Python TypeError:在散列之前必须对Unicode对象进行编码什么是错误的?,python,django,Python,Django,我得到一个错误,TypeError:在散列之前必须对Unicode对象进行编码。 我写代码 user = Data() passwd = request.data['password'] md5 = hashlib.md5() md5.update(passwd) user.password = md5.hexdigest() print(user.password) user.

我得到一个错误,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,但也出现了相同的错误。我的代码中有什么错误?我应该如何修复它?

错误告诉您需要执行的操作:将密码编码到bytestring

md5.update(passwd.encode('utf-8'))
注意,尽管你可能根本不应该这样做;如果要使用用户密码,请使用用户模型的
set\u password()
方法


(请不要在脚本中随机添加编码声明;这只会影响文件中的文字字符。)

相关:。请注意,
#-*-编码:utf-8-*-
定义了源文件的编码,并且是,因为它默认为utf-8。使用md5作为密码哈希算法可能不是一个好主意。查看此问题以了解详细信息: