我正在尝试在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”的模块
答案 0 :(得分:1)
似乎您在混淆两个软件包。您的requirements.txt中的djangorestframework-jwt
是no 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-simplejwt
从 4.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)
对我来说,通过重新启动虚拟环境来解决问题