Проблема совместимости Django-регистрации с django 1.7
Я использовал [django-registration] ( https://bitbucket.org/ubernostrum/django-registration) и теперь я начал использовать django 1.7b1, и вот ошибка, которую я получаю, скопировав ошибку ниже. Это поднимается с Джанго-регистрации в models.py
:
try:
from django.contrib.auth import get_user_model
User = get_user_model()
except ImportError:
from django.contrib.auth.models import User
и кажется, что он поднимается, потому что get_user_model()
вызывается до того, как реестр приложения будет готов. Я не уверен, если это проблема совместимости или нет, если да, есть ли простой обходной путь для этого? и если нет, можете ли вы помочь мне определить, что я делаю неправильно?
RuntimeError: App registry isn't ready yet.
File "/Users/nima/pe-dev/manage.py", line 9, in <module>
execute_from_command_line(sys.argv)
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/core/management/__init__.py", line 427, in execute_from_command_line
utility.execute()
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/core/management/__init__.py", line 391, in execute
django.setup()
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/apps/registry.py", line 106, in populate
app_config.import_models(all_models)
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/apps/config.py", line 190, in import_models
self.models_module = import_module(models_module_name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/Library/Python/2.7/site-packages/registration/models.py", line 15, in <module>
User = get_user_model()
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/contrib/auth/__init__.py", line 136, in get_user_model
return django_apps.get_model(settings.AUTH_USER_MODEL)
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/apps/registry.py", line 187, in get_model
self.check_ready()
File "/Library/Python/2.7/site-packages/Django-1.7b1-py2.7.egg/django/apps/registry.py", line 119, in check_ready
raise RuntimeError("App registry isn't ready yet.")
2 ответа
Не используйте django-регистрацию, доступную в PyPI. Он не поддерживает Django 1.7 и, похоже, никогда не будет. Ответственный за репозиторий отрекся от дел, и проект кажется не поддерживаемым.
На Github есть сервисная вилка, которая хорошо работает для меня с Django 1.7:
https://github.com/macropin/django-registration
Он доступен из PyPI как django-registration-redux.
https://pypi.python.org/pypi/django-registration-redux/
Вы можете установить с помощью pip:
pip install django-registration-redux
Эта заметка посвящена вашей проблеме.
Я думаю, что предпочтительный способ импорта пользователя:
from django.conf import settings
User = settings.AUTH_USER_MODEL
РЕДАКТИРОВАТЬ:
Похоже, что эта проблема была замечена, но администратору проекта трудно внести изменения. ссылка Это большая проблема с обновлениями в Django 1.7.
Я бы сказал, что вы можете: (1) сделать репо и внести изменения самостоятельно, или (2) внести изменения в папку пакетов вашего сайта после установки pip. Последняя версия не будет работать так же хорошо, если вы затем перенесете ее на другой сервер и установите с помощью require.txt. Обратите внимание, что если вы сделаете вариант 1 с помощью require.txt, вы захотите указать его в своем репо, а не в Django-регистрации.