مشكلة توافق تسجيل Django مع Django 1.7
-
21-12-2019 - |
سؤال
أنا أستخدم [تسجيل جانغو] (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.")
المحلول
لا تستخدم تسجيل 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 install django-registration-redux
نصائح أخرى
هذه المذكرة يعالج مشكلتك.
أعتقد أن الطريقة المفضلة لاستيراد المستخدم هي:
from django.conf import settings
User = settings.AUTH_USER_MODEL
يحرر:
يبدو أن هذه المشكلة قد تمت ملاحظتها ولكن مسؤول المشروع يواجه صعوبة في إجراء التغيير. وصلة.هذه مشكلة أكبر مع التحديثات في Django 1.7.
أود أن أقول أنه يمكنك إما:(1) افصل الريبو وقم بإجراء التغيير بنفسك، أو (2) قم بإجراء التغييرات في مجلد حزم موقعك بعد تثبيت النقطة.لن يعمل الإصدار الأخير جيدًا إذا قمت بعد ذلك بدفعه إلى خادم آخر وتثبيته باستخدام ملف require.txt.لاحظ أنه إذا قمت بتنفيذ الخيار 1 باستخدام ملف require.txt، فستحتاج إلى توجيهه إلى الريبو الخاص بك بدلاً من تسجيل جانغو.