ProgramingTip

django 관리자 생성 후 사이트 일치 쿼리 가져 오기 오기가 존재하지 않음 발생 오류

bestdevel 2020. 12. 31. 23:34
반응형

django 관리자 생성 후 사이트 일치 쿼리 가져 오기 오기가 존재하지 않음 발생 오류


앱에 대한 관리자를 만들기 위해 표준 Django를 만나 보겠습니다. 설정에서 관리자 관련 항목에 주석을 달고 syncdb를 실행하면 다음 메시지가 표시됩니다.

DoesNotExist at /admin/ Site matching query does not exist.

누구든지 서열 알아낼 수 있습니까?


SiteDjango 프로젝트 개체가 없습니다. 각 Django 프로젝트에는 Site사이트의 이름과 도메인이 포함 개체가 있습니다. 일반적으로 Django 프로젝트를 만들 때 (명령 syncdb생성이 실행될 때) 자동으로 명령이 실행될 발생하지 않습니다.

그것을 해결하기 위해 :

사이트 ( python manage.py shell) 의 Django 셸을 다 .

다음을 입력하십시오.

>>> from django.contrib.sites.models import Site
>>> Site.objects.create(name='example.com', domain='example.com')

나중에 필요한 값을 변경하려는 패널 패널 ( /admin/) 로 이동 하여 섹션에서 사이트 개체를 편집합니다 Sites.


여전히 문제가있는 사용자에 대한 Simeon Visser의 답변 외에도 SITE_ID설정 변수가 새로 생성 된 Site개체 의 ID와 일치 하는지 확인하십시오 .


django.contrib.sites 를 INSTALLED_APPS에 포함 하고 "python manage.py migrate"명령을 실행하면 앱이 자동으로 "django_site"테이블에 생성됩니다 (도메인 이름 및 표시 이름은 "example.com"과 동일). 스스로 만들 필요가 없습니다.

아마도 settings.py 파일에 SITE_ID = 1 설정을 추가하기 만하면 됩니다.


회의 앱에서 django.contrib.sites를 주석 처리하십시오.

#'django.contrib.sites',

django의 고정 기능을 사용하여 데이터를 자동으로 채우는 것도 고려할 수 있습니다. https://docs.djangoproject.com/en/dev/howto/initial-data/

[
    {
        "model" : "sites.site",
        "pk" : 1,
        "fields": {
            "name"  : "example.com",
            "domain" : "127.0.0.1:8010"
        }
    }
]

실행 후 이미 사이트 테이블에 example.com이있는 경우

python manage.py migrate

이 항목의 ID를 가져와야합니다.

할 수있는 ID를 얻으려면-

python manage.py  shell
from django.contrib.sites.models import Site
print Site.objects.get(name='example.com').id

여기에있는 ID를 얻을 수 setting.py있습니다. 예 :

SITE_ID = 8

기본적으로 여행 사이트와 settings.py에 해당하는 테이블의 ID가 일치합니다.


저는 Django입니다. 튜토리얼을 진행할 때 동일한 오류가 발생했습니다. django_siteDB 테이블이 비어 있습니다. "django_ *"라는 이름의 모든 테이블을 삭제하도록 선택했습니다. 그런 다음 다시 실행 syncdb하면 누락 된 django 테이블이 생성되고 django_siteDB 테이블은 id = 1, domain = example.com, name = example.com으로 채워집니다. 분명히 Site클래스는 django_siteDB 테이블에 의해 뒷받침 됩니다. 이제 Site.objects.create()방법을 사용하여 테이블을 채운 위의 문제와 솔루션을 이해했습니다 . 시므온.


South 및 initial_data 데이터가 제대로 작동하지 않습니다. 수정 비용 추가

if 'test' in sys.argv or 'jenkins' in sys.argv:
    SOUTH_TESTS_MIGRATE = False

설정 파일 끝에


설치 관리자를 통해 사이트를 추가하고 각 사이트에 ID가있는 일부를 삭제하면 작동을 작동을 DB에서 ID를 변경하면 작동하지 않고 SITE_ID가 데이터베이스의 ID와 일치하는지 확인합니다.


사이트 개체가 누락되어 사이트 개체 1 개를 추가해야합니다.

해결책 :

Django shell (python manage.py shell)을 .

In [1]: from django.contrib.sites.models import Site

In [2]: Site.objects.create(name='example.com',domain='example.com').save()

In [3]: s=Site.objects.filter(name='example.com')[0]

In [4]: s.id
Out[4]: 3

그런 다음 settings.py파일 SITE_ID = 3해당 값을 추가하십시오 SITE_ID= 다음에 얻는 ( s.id)


나는 또한 오랫동안 오랫동안 같은 오류로 고심하고 오랫동안 오류로 일했습니다. 실수로 관리자의 사이트 디렉토리에서 example.com을 삭제했습니다. 위의 솔루션을 사용하여 사이트를 추가하면 작동했습니다. 또한 example.com을 만들 때 site_id가 자동으로 2가 있던 파일에서 site_id를 2로 변경해야했습니다. 감사합니다.

참조 URL : https://stackoverflow.com/questions/11476210/getting-site-matching-query-does-not-exist-error-after-creating-django-admin

반응형