无法为 API 设置 'DEFAULT_AUTHENTICATION_CLASSES' 导入 'knox.auth.TokenAuthentication'

Could not import 'knox.auth.TokenAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'

我是 Django rest 的新手,我正在尝试创建一个非常简单的应用程序,允许用户使用 knox login/sign-up。但是当我尝试 运行 命令如“python manage.py makmigrations” 或任何其他 Django 相关命令时,我收到此错误:

ImportError: Could not import 'knox.auth.TokenAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'. ImportError: cannot import name 'ugettext_lazy' from 'django.utils.trans lation' (C:\Users\user\Desktop\Proj\Server\env\lib\site-packages\django\utils\translation\__init__.py).

这是我的 settings.py 文件中我认为与 knox 相关的部分:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',

'rest_framework',
'knox',
'corsheaders',

'app',]


AUTH_USER_MODEL = 'app.User'

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': ('knox.auth.TokenAuthentication', ),}

在花了几个小时试图找出发生这种情况的原因后,我意识到这是因为我使用的是 Django 4.0!!!!!!

我降级到 Django 3.2.11,结果一切正常:)

搜索这个问题后,因为我也遇到了。 我安装了 pip install django-rest-knox,它对我有用。