导入错误:无法导入“rest_framework_simplejwt.authentication.JWTAuthentication”

新手上路,请多包涵

我正在尝试在 GCP 上部署一个 Django 应用程序,但是当我尝试进行迁移时,它给了我这个错误:

ImportError:无法为 API 设置“DEFAULT_AUTHENTICATION_CLASSES”导入“rest_framework_simplejwt.authentication.JWTAuthentication”。 ModuleNotFoundError:没有名为“rest_framework_simplejwt”的模块。

设置.py

 REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated'
    ],
'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ]
}

SIMPLE_JWT = {
    'ALGORITHM': 'HS256',
    'SIGNING_KEY': SECRET_KEY,
    'VERIFYING_KEY': None,
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=800),
    'REFRESH_TOKEN_LIFETIME': timedelta(days=2),
}
OAUTH2_PROVIDER = {
        'ACCESS_TOKEN_EXPIRE_SECONDS': 60 * 15,
        'OAUTH_SINGLE_ACCESS_TOKEN': True,
        'OAUTH_DELETE_EXPIRED': True
 }

要求.txt

 django-cors-headers
pyjwt
djangorestframework
djangorestframework-jwt==1.11.0

我错过了什么?

更新 我安装了 rest_framework_simplejwt 现在错误转移到:

没有名为“rest_framework_simplejwt.tokens”的模块

原文由 Rahul Sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

看来您混淆了两个包。 djangorestframework-jwt 您在 requirements.txt 中的文件 不再维护。它提供了 rest_framework_jwt.authentication.JSONWebTokenAuthentication 认证类。

但是,您实际使用的 rest_framework_simplejwt.authentication.JWTAuthentication 来自 pip 包 djangorestframework-simplejwt

所以你需要更新你的 requirements.txt。删除 djangorestframework-jwt 并添加 djangorestframework-simplejwt

原文由 Bary12 发布,翻译遵循 CC BY-SA 4.0 许可协议

对我来说 djangorestframework-simplejwt4.4.0 升级到当前最新版本 4.6.0 解决了这个问题。

 pip3 install --upgrade djangorestframework-simplejwt

原文由 Ali Aref 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题