ImportError: Could not import

settings配置:

REST_FRAMEWORK = {
    # 异常处理
    'EXCEPTION_HANDLER': 'meiduo_mall.utils.exceptions.exception_handler',
    'DEFAULT_AUTHENTICATION_CLASSES': (
        # 配置登录鉴权方式
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication' # 先进行token认证
        'rest_framework.authentication.SessionAuthentication',  # 次要进行session认证
        'rest_framework.authentication.BasicAuthentication',  # 最后进行基本认证
    ),
}

报错如下:

ImportError: Could not import ‘rest_framework_jwt.authentication.JSONWebTokenAuthenticationrest_framework.authentication.SessionAuthentication’ for API setting ‘DEFAULT_AUTHENTICATION_CLASSES’. ModuleNotFoundError: No module named ‘rest_framework_jwt’.

修改成:

REST_FRAMEWORK = {
    # 异常处理
    'EXCEPTION_HANDLER': 'meiduo_mall.utils.exceptions.exception_handler',
    'DEFAULT_AUTHENTICATION_CLASSES': (
        # 配置登录鉴权方式
        'rest_framework_simplejwt.authentication.JWTAuthentication',  # 先进行token认证
        'rest_framework.authentication.SessionAuthentication',  # 次要进行session认证
        'rest_framework.authentication.BasicAuthentication',  # 最后进行基本认证
    ),
}

原因如下:

'rest_framework_jwt.authentication.JSONWebTokenAuthentication'这是djangorestframework-jwt提供,不再维护。

只需卸载它,而是使用 'rest_framework_simplejwt.authentication.JWTAuthentication' 来自djangorestframework-simplejwt

  1. 安装djangorestframework-simplejwtpip install djangorestframework-simplejwt
  2. 'DEFAULT_AUTHENTICATION_CLASSES'应该是这样的:
    'DEFAULT_AUTHENTICATION_CLASSES': (
        
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework_simplejwt.authentication.JWTAuthentication', 
    ),
  3. 在您的根urls.py文件(或任何其他 url 配置)中,包含 Simple JWTTokenObtainPairViewTokenRefreshView视图的路由:
from rest_framework_simplejwt.views import (
    TokenObtainPairView,
    TokenRefreshView,
)

urlpatterns = [
    ...
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    ...
]

更多信息查看官方文档

© 版权声明
THE END
喜欢就支持一下吧
点赞9赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容