Django admin DoNotExist at/admin/
У меня есть некоторые проблемы с администратором 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)),
)
Ответы
Ответ 1
Вам действительно не нужна структура sites
, если вы используете только один сайт из проекта, поэтому самым простым решением будет удалить следующий элемент из INSTALLED_APPS
и ошибку должен уйти:
'django.contrib.sites'
Вы также можете повторно создать отсутствующий объект сайта из оболочки. Запустите python manage.py shell, а затем:
from django.contrib.sites.models import Site
Site.objects.create(pk=1, domain='www.example.com', name='example.com')
Ответ 2
Эта же проблема внезапно пришла ко мне, и вы знаете, что есть много решений. Однако, какова причина этой внезапной проблемы?
После глубокого поиска я обнаружил, что причина в том, что мы проигнорировали шаг в первом действии syncdb.
Когда у вас есть первый syncdb, django попросит вас создать учетную запись по умолчанию, если вы не вводите в это интерактивное шоу, этот объект сайта не будет создан автоматически.
Так что будьте осторожны. Я использую django 1.3.1, не знаю, разрешила ли последняя версия эту проблему.
Ответ 3
просто исправил проблему другим способом:
Я использую PostgreSQL и Django 1.45...
поскольку я удалил сайт www.example.com и добавил новый сайт www.xxx.com, он был добавлен как ID = 2
потому что PostgreSQL не возвращается в идентификационные номера, а логин и выход из Django-сайтов каким-то образом привязаны только к ID = 1 сайту в вашей базе данных...
Я пошел в свою базу данных PostgreSQL и сменил ID www.xxx.com на 1, а затем снова смог увидеть сайт входа и выхода из системы:)
кстати. [да, вы можете просто удалить django.contrib.sites из вашего settings.py, если вам это не понадобится ^^ (но я не пробовал это в моем случае с проблемой ID-номера)]
надеюсь, что он будет работать для дальнейших пользователей!;)
Ответ 4
Вы можете исправить эту ошибку, если используете django.contrib.sites
без, удалив ее, изменив значение SITE_ID = 1
в файле settings.py
.
Случилось со мной, когда я изменил имя домена на своем сервере, я удалил старое имя домена из http://mynewdomainname.com/admin/sites/site/
вручную, а в старой записи домена в базе данных id = 1
также добавлено новое доменное имя mynewdomainname.com
и это id 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 sites.
Ответ 5
Проверьте диспетчер задач Windows и убедитесь, что существует одно имя процесса "python.exe". Если их много, удалите их все, а затем перезапустите сервер. Это решение работает для меня.