Problème de compatibilité d'enregistrement de Django avec Django 1.7
-
21-12-2019 - |
Question
J'utilise [django-registration] (https://bitbucket.org/ubernostrum/django-registration) et maintenant j'ai commencé à utiliser Django 1.7b1 et voici l'erreur que je reçois ci-dessous.Il est issu de l'enregistrement de Django dans models.py
:
try:
from django.contrib.auth import get_user_model
User = get_user_model()
except ImportError:
from django.contrib.auth.models import User
et il semble qu'il soit soulevé parce que get_user_model()
est appelé avant que le registre des applications ne soit prêt.Je ne sais pas s'il s'agit d'un problème de compatibilité ou non, si oui, existe-t-il une solution simple à ce problème ?et sinon, pouvez-vous m'aider à identifier ce que je fais de mal ?
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.")
La solution
N'utilisez pas l'enregistrement Django disponible sur PyPI.Il ne prend pas en charge Django 1.7 et il semble que ce ne sera jamais le cas.Le responsable du dépôt a abdiqué et le projet ne semble pas maintenu.
Il existe un fork de maintenance disponible sur Github qui a bien fonctionné pour moi avec Django 1.7 :
https://github.com/macropin/django-registration
Il est disponible sur PyPI sous le nom django-registration-redux.
https://pypi.python.org/pypi/django-registration-redux/
Vous pouvez installer en utilisant pip :
pip install django-registration-redux
Autres conseils
Cette note répond à votre problème.
Je pense que la meilleure façon d'importer un utilisateur est :
from django.conf import settings
User = settings.AUTH_USER_MODEL
MODIFIER:
Il semble que ce problème ait été noté, mais l'administrateur du projet a du mal à effectuer le changement. lien.Il s'agit d'un problème plus important avec les mises à jour de Django 1.7.
Je dirais que vous pourriez soit :(1) créez le dépôt et effectuez la modification vous-même, ou (2) effectuez les modifications dans le dossier des packages de votre site après l'installation de pip.Cette dernière version ne fonctionnera pas aussi bien si vous la transférez ensuite sur un autre serveur et l'installez avec Requirements.txt.Notez que si vous effectuez l'option 1 avec Requirements.txt, vous souhaiterez le pointer vers votre dépôt plutôt que vers l'enregistrement Django.