我想访问Django OAUTH Toolkit使用的模型,以便可以定期从数据库中删除旧令牌。我以为我会导入它们:
from oauth2_provider.management.commands.cleartokens import Command
from oauth2_provider.models import AccessToken
Command.handle()
但是,当我尝试在命令行中运行此文件时,出现以下错误:
Traceback (most recent call last):
File ".\db_cleanup.py", line 5, in <module>
from oauth2_provider.models import AccessToken
File "C:\Users\User\.virtualenvs\gsm-django\lib\site-packages\oauth2_provider\models.py", line 178, in <module>
class Application(AbstractApplication):
File "C:\Users\User\.virtualenvs\gsm-django\lib\site-packages\django\db\models\base.py", line 95, in __new__
"INSTALLED_APPS." % (module, name)
RuntimeError: Model class oauth2_provider.models.Application doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
我也尝试将oauth2_provider.models.Application
添加到设置文件中已安装的应用程序中,但无济于事:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'api',
'oauth2_provider',
'oauth2_provider.models.Application',
'rest_framework',
'rest_framework.authtoken',
'graphene_django',
'corsheaders',
]
我也将app_label
添加到它提到的Application
类中,但这也不起作用。
答案 0 :(得分:1)
如果您查看django-oauth2-provider docs(我认为这是正确的库;由于我没有在您的问题中找到链接,我不得不猜测),它说:
将OAuth2提供程序添加到INSTALLED_APPS
INSTALLED_APPS = ( # ... 'provider', 'provider.oauth2', )
但是我注意到您在问题中的代码还有其他内容:
'oauth2_provider',
'oauth2_provider.models.Application',
您是否尝试过文档建议的内容?这样对您有用吗?
答案 1 :(得分:0)
如果您查看django oauth2 toolkit docs,它会显示:
将oauth2_provider添加到您的INSTALLED_APPS
INSTALLED_APPS = ( ... 'oauth2_provider', )
但是我注意到问题中的代码有2个应用程序,而不是1个。
'oauth2_provider',
'oauth2_provider.models.Application',
您是否尝试过删除该应用oauth2_provider.models.Application
?这样对您有用吗?