Подтвердить что ты не робот

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)),
)
4b9b3361

Ответ 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". Если их много, удалите их все, а затем перезапустите сервер. Это решение работает для меня.