今天在使用djangorestframework-jwt 時遇到了一個錯誤,錯誤提示如下:
AttributeError at /jwt-auth/ module 'jwt' has no attribute 'encode'
找到這個出錯的地方"rest_framework_jwt包下的utils.py"模塊,代碼塊
def jwt_encode_handler(payload):
key = api_settings.JWT_PRIVATE_KEY or jwt_get_secret_key(payload)
return jwt.encode(
payload,
key,
api_settings.JWT_ALGORITHM
).decode('utf-8')
根據錯誤的提示,應該是jwt下面沒有encode這個方法,然後ctrl+鼠標左鍵打開了jwt,發現裏面確實沒有這個方法,所以我懷疑是我安裝的jwt版本問題,我就卸載、重裝了jwt;重試之後發現仍然報錯,我網上搜索這個錯誤,發現網上並沒有和我類似的。我就有查詢了在Django下使用jwt的方法,發現有兩個,一是安裝PyJWT、二是使用djangrestframework-jwt,我發現那些文章中從沒有說明要單獨安裝jwt這個包,我想這個包應該是安裝上面兩個包時自己安裝的,所以我先卸載jwt、然後卸載PyJWT、djangrestframework-jwt,重新安裝PyJWT、djangrestframework-jwt,重試一次,發現成功了!
總結這次解決問題的心路歷程,安裝依賴庫時應該安裝依賴順序安裝,否則可能會導致版本問題,如果卸載一個包不行,那就把相關的包都卸載再按順序安裝~