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

Получение запроса на совпадение с сайтом не существует Ошибка после создания администратора django

Я использую стандартный учебник Django для создания администратора для приложения. После комментирования связанного с администратором материала в настройках и запуска syncdb я получаю это сообщение:

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

Может кто-нибудь помочь мне понять это?

4b9b3361

Ответ 1

Объект Site для вашего проекта Django отсутствует. Каждый проект Django имеет объект Site, который содержит имя сайта и домен. Обычно он создается автоматически при создании проекта Django (в частности, когда выполняется команда syncdb), но в вашем случае кажется, что этого не произошло.

Чтобы исправить это:

Откройте оболочку Django для вашего сайта (python manage.py shell).

Введите следующее:

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

Если вы хотите позже изменить эти значения, перейдите на панель администратора (/admin/) и отредактируйте объект сайта в разделе Sites.

Ответ 2

В дополнение к запросу Simeon Visser для тех из вас, которые все еще испытывают проблемы, убедитесь, что переменная SITE_ID в ваших настройках совпадает с идентификатором вашего вновь созданного объекта Site.

Ответ 3

Когда вы включаете django.contrib.sites на свой INSTALLED_APPS и запускаете команду "python manage.py migrate", приложение автоматически создает объект в таблице "django_site" (с именем домена и дисплеем имя равно "example.com". Нет необходимости создавать его самостоятельно.

Возможно, вам просто нужно добавить параметр SITE_ID = 1 в файл settings.py.

Ответ 4

прокомментируйте django.contrib.sites из установленных приложений. т.е.

#'django.contrib.sites',

Ответ 5

Вы также можете рассмотреть возможность использования функции fixture 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"
        }
    }
]

Ответ 6

Если у вас уже есть example.com в таблице сайтов после запуска

python manage.py migrate

Вам нужно получить идентификатор этой записи.

Чтобы получить идентификатор, который вы можете сделать -

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

Получите идентификатор, который вы получаете здесь, в setting.py. Например.

SITE_ID = 8

В основном ID в таблице, соответствующей вашему туристическому сайту, и в settings.py должен совпадать.

Ответ 7

Я новичок в Django. У меня такая же ошибка при просмотре учебника. Моя таблица django_site DB была пуста. Я решил удалить все таблицы с именем "django_ *". Затем, когда я повторно запустил syncdb, были созданы отсутствующие таблицы django, а таблица DB django_site была заполнена id = 1, domain = example.com, name = example.com. Очевидно, класс Site поддерживается таблицей django_site DB. Теперь я понимаю проблему и решение выше, которое заполняет таблицу с помощью метода Site.objects.create(). Спасибо Симеон.

Ответ 8

Если вы используете инструменты South и initial_data, данные могут быть загружены неправильно. Чтобы исправить это, добавьте

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

в конце файла настроек

Ответ 9

Иногда, если вы добавляете больше сайтов через Admin и удаляете некоторые из них, у каждого сайта есть идентификатор, он не работал у меня, как только я изменил идентификатор в базе данных, с которой он начал работать, поэтому убедитесь, что SITE_ID соответствует идентификатору в базе данных.

Ответ 10

Отсутствует объект сайта, поэтому необходимо добавить 1 объект сайта.

Решение:

открыть оболочку Django (оболочка python manage.py):

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)

Ответ 11

Я также боролся с той же ошибкой в течение довольно долгого времени. Я по ошибке удалил example.com из каталога сайтов в админке. Как только я добавил сайт, используя вышеуказанные решения, он заработал. Кроме того, site_id автоматически стал 2, когда я создал example.com, и поэтому мне пришлось изменить site_id на 2 в моем файле настроек. Спасибо.