python - Django + Testypie 问题:AppRegistryNotReadyException
问题描述
我一直在用 Django 尝试 Testipie 并得到一个 AppRegistryNotReady 异常。我找到了几种解决方法,但没有任何帮助。
- 蟒蛇:3.6
- 姜戈:2.1.2
- django-tastypie:0.14.2
已安装的应用程序
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'services',
'tastypie'
]
服务/__init__.py
`default_app_config = 'services.apps.ServicesConfig'`
服务/apps.py
from django.apps import AppConfig
from django.contrib.auth import get_user_model
from django.db.models import signals
from tastypie.models import create_api_key
User = get_user_model()
class ServicesConfig(AppConfig):
name = 'services'
def ready(self):
signals.post_save.connect(create_api_key, sender=User)
我得到了一个回溯:
Traceback (most recent call last):
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
fn(*args, **kwargs)
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run
autoreload.raise_last_exception()
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/site-packages/django/utils/autoreload.py", line 248, in raise_last_exception
raise _exception[1]
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/site-packages/django/core/management/__init__.py", line 337, in execute
autoreload.check_errors(django.setup)()
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
fn(*args, **kwargs)
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/site-packages/django/apps/registry.py", line 89, in populate
app_config = AppConfig.create(entry)
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/site-packages/django/apps/config.py", line 116, in create
mod = import_module(mod_path)
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 994, in _gcd_import
File "", line 971, in _find_and_load
File "", line 955, in _find_and_load_unlocked
File "", line 665, in _load_unlocked
File "", line 678, in exec_module
File "", line 219, in _call_with_frames_removed
File "/home/chumachenko/Documents/Projects/tastypie_tutorial/services/apps.py", line 4, in
from tastypie.models import create_api_key
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/site-packages/tastypie/models.py", line 15, in
class ApiAccess(models.Model):
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/site-packages/django/db/models/base.py", line 87, in __new__
app_config = apps.get_containing_app_config(module)
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/site-packages/django/apps/registry.py", line 249, in get_containing_app_config
self.check_apps_ready()
File "/home/chumachenko/.local/share/virtualenvs/tastypie_tutorial-aq48eQFJ/lib/python3.6/site-packages/django/apps/registry.py", line 132, in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
也许有人已经有这个问题?
解决方案
我已经找到了解决该问题的方法。您应该对services/apps.py进行一些更改
from django.apps import AppConfig
from django.contrib.auth import get_user_model
from django.db.models import signals
class ServicesConfig(AppConfig):
name = 'services'
# This line dispatches signal to Tastypie to create APIKey
def ready(self):
from tastypie.models import create_api_key
User = get_user_model()
signals.post_save.connect(create_api_key, sender=User)
推荐阅读
- html - 在 OctoberCMS 中根据 url slug 更改 css 类
- java - 无法通过 Android 中的 SharedPreferences 保存数据
- c++ - 保证复制省略和返回类型的前向声明
- solr - 使用 solr 管理面板将 csv 文件上传到 solr
- ssl - 使用 Wireshark 解密 EAP-TLS 1.3 流量
- javascript - 赛普拉斯如何在不影响间隔的情况下设置日期
- python - 我想在 django html 页面上显示 python opencv 视频我怎样才能实现它
- node.js - 获取具有关注者和关注者的相互列表
- python - 如何过滤熊猫数据框并保留特定元素?
- c# - 如何将 unicode 字符串从 c# 传输到 c/c++ dll