Администратор Django делает NototExist в / admin / - PullRequest
24 голосов
/ 16 марта 2012

У меня проблемы с администратором Django.

после syncdb, результат:

  Creating tables ...
  Installing custom SQL ...
  Installing indexes ...
  No fixtures found.

Что это значит?

В любом случае, когда я захожу на панель администратора сайта http://www.example.com/admin/,, я получаю это сообщение:

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

setting.py содержит:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
)

ur.py содержит:

from django.conf.urls.defaults import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'rshd.views.home', name='home'),
    # url(r'^rshd/', include('rshd.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
     url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
     url(r'^admin/', include(admin.site.urls)),
)

Ответы [ 7 ]

74 голосов
/ 16 марта 2012

В действительности вам не нужна инфраструктура sites, если вы запускаете только один сайт из проекта, поэтому самое простое решение - удалить следующий элемент из INSTALLED_APPS, и ошибкауйти:

'django.contrib.sites'

Вы также можете воссоздать отсутствующий объект Site из оболочки.Запустите python manage.py shell и затем:

from django.contrib.sites.models import Site
Site.objects.create(pk=1, domain='www.example.com', name='example.com')
7 голосов
/ 25 января 2018

Вы можете исправить эту ошибку, если используете django.contrib.sites без удаления, изменив значение SITE_ID = 1 в файле settings.py.

Это случилось со мной, когда я изменилдоменное имя на моем сервере, я удалил старое доменное имя из http://mynewdomainname.com/admin/sites/site/ вручную, а старая запись домена в базе данных имеет id = 1, также я добавил новое доменное имя mynewdomainname.com, и это был идентификатор id = 2, Я просто изменил на SITE_ID = 2 и ошибка исчезла SITE_ID относится к текущему «pk» активного имени домена, которое вы используете по умолчанию.В коде:

>>> from django.contrib.sites.models import Site
>>> # get_current() came from SiteManager class manager, 
>>> # see site-packages/django/contrib/sites/models.py
>>> current_site = Site.objects.get_current()
>>> print(current_site.pk)
2
>>> print(current_site.domain)
'http://mynewdomainname.com'

это происходит после settings.py изменения

SITE_ID = 2

Будьте внимательны с текущим идентификатором домена в сайтах django app.

3 голосов
/ 15 марта 2013

Та же самая проблема внезапно пришла ко мне, и вы знаете, что есть много решений.Однако в чем причина этой внезапной проблемы?

После глубокого изучения я обнаружил, что причина в том, что мы проигнорировали шаг в первом действии syncdb.

Когда у вас есть первый syncdb, django попросит вас создать учетную запись по умолчанию, если вы не введете это интерактивное шоу, этот объект сайта не будет создан автоматически.

Так что будьте осторожны с этим.Я использую django 1.3.1, не знаю, решена ли последняя версия этой проблемы.

1 голос
/ 30 апреля 2018

Поскольку вышеприведенные комментарии довольно старые, а команда syncdb не существует, и я не хочу удалять django.contrib.sites, вот что сработало для меня:

Увеличение SITE_ID.У меня было SITE_ID = 1, я изменил его на SITE_ID = 2 и все снова заработало.

1 голос
/ 01 марта 2013

только что исправил проблему другим способом:

Я использую PostgreSQL и Django 1.45 ... когда я удалил сайт www.example.com и добавил новый сайт www.xxx.com, он был добавлен как ID = 2 потому что PostgreSQL не возвращается в идентификационные номера, а вход и выход из системы Django-сайты каким-то образом связаны только с сайтом ID = 1 в вашей БД ...

Я зашел в свою базу данных PostgreSQL и изменил идентификатор www.xxx.com на 1, а затем снова смог увидеть сайт входа и выхода:)

кстати. [да, вы можете просто удалить django.contrib.sites из вашего settings.py, если вам это не нужно ^^ (но я не пробовал это в моем случае, с проблемой с идентификационным номером)]

надеюсь, что это будет работать для дальнейших пользователей! ;)

0 голосов
/ 23 октября 2018

Да измените SITE_IT = 1 на SITE_ID = 2 и все в порядке

0 голосов
/ 12 сентября 2013

Проверьте диспетчер задач Windows и убедитесь, что запущено 1 имя процесса «python.exe». Если их много, удалите их все и перезапустите сервер. Это решение работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...