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'[重复]

AttributeError:“str”对象没有属性“items”

为啥我得到 AttributeError:'str' 对象没有属性 'strftime'?