AttributeError: ‘str‘ object has no attribute ‘decode‘解决方法
Posted 在奋斗的大道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AttributeError: ‘str‘ object has no attribute ‘decode‘解决方法相关的知识,希望对你有一定的参考价值。
问题描述:今天使用Django + Jwt 实现Token 认证(前后端分离),遇到上述错误
AttributeError: ‘str‘ object has no attribute ‘decode‘
问题代码片段:
@property
def token(self):
return self._generate_jwt_token()
def _generate_jwt_token(self):
token = jwt.encode({
'exp': datetime.datetime.now() + datetime.timedelta(days=1),
'iat': datetime.datetime.now(),
'data': {
'name': self.name
}
}, settings.SECRET_KEY, algorithm='HS256')
return token.decode('utf-8')
问题代码修改后:
产生上述问题的原因分析:
AttributeError: ‘str’ object has no attribute ‘decode’
一般是因为str的类型本身不是bytes,所以不能解码 。
语法说明:
encode: 把普通字符串 转为 机器可识别的bytes
decode: 把bytes转为字符串
Python2 与Python3 版本差异:
Python3的string(字符串) 默认不是bytes,所以不能直接decode,只能先encode转为bytes,再decode。
python2的string(字符串) 默认是bytes,所以能decode。
结论:Python3 字符串转byte ,必须先encode 再decode
以上是关于AttributeError: ‘str‘ object has no attribute ‘decode‘解决方法的主要内容,如果未能解决你的问题,请参考以下文章
SQLAlchemy“AttributeError:'str'对象没有属性'c'”
AttributeError 'str' 对象没有属性 'path'
Django 2.2 + AttributeError:'str'对象没有属性'decode'
AttributeError:'str'对象在构建逻辑回归模型时没有属性'decode'[重复]