2014-04-13 10 views
11

나는 [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.") 

답변

25

PyPI에서 사용할 수있는 장고 등록을 사용하지 마십시오. 그것은 장고 1.7을 지원하지 않으며 그것은 결코 나타나지 않을 것입니다. repo 관리자가 퇴사했고 프로젝트가 유지 보수되지 않은 것처럼 보입니다.

https://github.com/macropin/django-registration

그것은 장고 등록-REDUX로 PyPI에서 사용할 수 :

장고 1.7으로 나를 위해 잘 작동하고있다 Github에서에서 사용할 수있는 유지 보수 포크가있다.

https://pypi.python.org/pypi/django-registration-redux/

당신은 주사위를 사용하여 설치할 수 있습니다

pip install django-registration-redux

+0

당신 - 그리고 github 사용자 macropin - 저를 구해 줬습니다. –

+1

그 pip에 : pip install django-registration-redux –

+1

팁 @VisgeanSkeloru에 감사드립니다. 훨씬 간단한 설치 프로세스를 반영하여 답변을 업데이트했습니다. – ptevans

2

This note이 문제를 해결합니다.

나는 사용자를 가져올 수있는 좋은 방법이라고 생각 :

from django.conf import settings 
User = settings.AUTH_USER_MODEL 

편집 :이 문제가 언급되어 있지만, 프로젝트 관리자가 변경하기 어려운 점있는 것처럼

보인다. link. 이것은 Django 1.7의 업데이트에서 더 큰 문제입니다.

(1) repo를 포크하여 직접 변경하거나 (2) pip 설치 후 사이트 패키지 폴더에서 변경하십시오. 후자의 버전은 다른 서버에 push하고 requirements.txt로 설치하면 잘 작동하지 않을 것입니다. requirements.txt로 옵션 1을 수행하면 장고 등록 대신 repo를 가리 키기를 원할 것입니다.

+0

을 내가 너무 생각 정확히 무엇을 그. 문제는 그게 내가 가져 오기 시간에 내 코드에서'get_user_model()'을 호출하지 않는다는 것입니다. [django-registration] (https://bitbucket.org/ubernostrum/django-registration/src/8f242e35ef7c004e035e54b4bb093c32bf77c29f)에서 호출되고 있습니다. /registration/models.py?at=default#cl-15) 응용 프로그램 이것이 장고 등록이 1.7b와 호환되지 않는다는 것을 의미합니까? – Nima

+0

그래, 레포 소유자가 더 이상 그것을 부끄럽지 않게 유지하고있는 것처럼 보입니다. 정확한 해결책이 무엇인지 모르겠습니다. 나는'settings.AUTH_USER_MODEL'가 문자열을 반환하고'get_model()'을 사용하여 실제 모델 클래스를 얻는 것이 불가능하기 때문에'User = settings.AUTH_USER_MODEL'이 작업을 수행 할 것이라고 생각하지 않습니다. – Nima

+0

방금 ​​get_user_model() 부분을 제거하고 User? 현재 다음과 같습니다 : '시도 : django.contrib.auth에서 가져 오기 get_user_model 사용자 = get_user_model() django.contrib.auth의 ImportError : 제외.모델 가져 오기 User' 처음 네 줄을 지우면 어떻게 되겠습니까? 'from django.contrib.auth.models import User ' – Alex