无法导入“oauth2_provider.ext.rest_framework.OAuth2Authentication”用于API设置“DEFAULT_AUTHENTICATION_CLASSES”。

19
这是我第一次使用django rest和Django Oauth toolkit,我正在按照这个教程oauth2-with-django-rest-framework操作。但是在运行python manage.py migrate时,出现了以下错误:
ImportError: 无法为API设置'DEFAULT_AUTHENTICATION_CLASSES'导入'oauth2_provider.ext.rest_framework.OAuth2Authentication'. ImportError:没有名为ext.rest_framework的模块。
出了什么问题?是否需要安装其他模块? 我的虚拟环境包含:
certifi == 2017.4.17
chardet == 3.0.4
Django == 1.11.2
django-extensions == 1.8.1
django-oauth-toolkit == 1.0.0
djangorestframework == 3.6.3
idna == 2.5
oauthlib == 2.0.2 pytz == 2017.2
requests == 2.18.1
six == 1.10.0
Unidecode == 0.4.21 urllib3 == 1.21.1

请展示你的设置文件。 - Exprator
设置文件包含:INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'business', 'rest_framework', 'django_extensions', 'oauth2_provider', ] 用于安装应用程序和 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'oauth2_provider.ext.rest_framework.OAuth2Authentication', ) } 用于 Django REST 设置。 - Akamee
2个回答

48

看起来 oath2_provider.ext 已经 被移动oauth_provider.contrib。您可以尝试安装旧版本的 django-oauth-toolkit,或尝试更改 DEFAULT_AUTHENTICATION_CLASSES 中的值:

'oauth2_provider.ext.rest_framework.OAuth2Authentication',

到:

'oauth2_provider.contrib.rest_framework.OAuth2Authentication',

请注意,本教程已经有几年的历史了,你可能会遇到其他类似的问题。

他们应该更新他们的文档 https://django-oauth-toolkit.readthedocs.io/en/latest/rest-framework/getting_started.html - Rohit Sthapit
2
@RohitSthapit“they”可能永远看不到那个评论。与其在这里抱怨,为什么不创建一个拉取请求并更新说明呢? - Alasdair

2

我曾经面临同样的问题。在我的设置文件中,DEFAULT_AUTHENTICATION_CLASSES已经设为'oauth2_provider.contrib.rest_framework.OAuth2Authentication'

按照@Alasdair的建议,我安装了较旧的版本。问题得到了解决。谢谢。

注:Original Answer翻译成“最初的回答”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接