ImportError:无法导入“ rest_framework_simplejwt.authentication.JWTAuthentication”

时间:2019-09-10 05:04:03

标签: python django django-rest-framework

我正在尝试在GCP上部署django应用,但是当我尝试进行迁移时,会出现此错误:

  

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

Settings.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
 }

requirements.txt

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

我想念什么?

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

  

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

5 个答案:

答案 0 :(得分:1)

似乎您在混淆两个软件包。您的requirements.txt中的djangorestframework-jwtno longer maintained。它提供rest_framework_jwt.authentication.JSONWebTokenAuthentication身份验证类。

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

因此,您需要更新您的requirements.txt。删除djangorestframework-jwt并添加djangorestframework_simplejwt

答案 1 :(得分:1)

如果仍然有人遇到此错误,这是djangorestframework-simplejwt的要求:

Python (3.6, 3.7, 3.8)
Django (2.0, 2.1, 2.2, 3.0)
Django REST Framework (3.8, 3.9, 3.10)

我将Django和DRF降级了,该问题为我解决了。

pip uninstall django
pip uninstall djangorestframework
pip install --upgrade django==3.0
pip install --upgrade djangorestframework==3.10
pip install djangorestframework-simplejwt

答案 2 :(得分:1)

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

pip3 install --upgrade djangorestframework-simplejwt

答案 3 :(得分:0)

尝试在Heroku上进行部署时遇到了相同的错误

经调查,我发现了2个问题:

1] requirements.txt->此文件未更新,因此'git add'和'git commit'没有满足djangorestframework-simplejwt的新要求

所以这里的解决方案是重新冻结点子> requirements.txt,git添加/提交并在Heroku上确认这一点

2]其次,我发现Heroku找不到我的python3.8在本地安装的v4.6.0。相反,我不得不将requirements.txt编辑为v4.4.0(当前在pypi.org上),在解决此问题之前重做git add / commit

答案 4 :(得分:0)

对我来说,通过重新启动虚拟环境来解决问题