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

Как исправить таблицу django_sites?

Пытаясь получить модуль oauth для работы, я сделал про-перемещение: manage.py reset sites

Это повлияло на убийство функций администратора и входа в систему моего сайта.

Итак, мой вопрос в том, как мне вернуться к квадрату и исправить то, что я сломал.

Вот моя текущая ошибка при попытке отобразить инструмент администратора:

DoesNotExist at /admin/
Site matching query does not exist.
Request Method: GET
Request URL:    http://mdev.5buckchuck.com/admin/
Django Version: 1.3
Exception Type: DoesNotExist
Exception Value:    
Site matching query does not exist.`

Я посмотрел документацию, но я потерялся и устал в ней: http://docs.djangoproject.com/en/1.3/ref/contrib/sites/

Казалось, он указывает: manage.py syncdb

Итак, мне интересно, что делать дальше...

4b9b3361

Ответ 1

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

'django.contrib.sites'

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

from django.contrib.sites.models import Site
Site.objects.create(pk=1, domain='mdev.5buckchuck.com', name='5buckchuck.com')

Ответ 2

Введите SITE_ID = 1 в settings.py. Это будет работать.

Ответ 3

Я тоже прошел эту проблему, играя с django-allauth. Приложение предлагает возможность удалять сайты. Если вы удалите значение, указанное параметром SITE_ID в settings.py, вам нужно указать правильный PK другого допустимого сайта.

Если вы удалили сайт по умолчанию example.com (изменения были сделаны при очистке после добавления другого сайта), вы можете просто захотеть выбрать другой сайт, который вы создали, например, установив SITE_ID на 2. Если вы работаете с базой данных SQL, найдите таблицу django_site и найдите идентификатор сайта, с которым вы хотите работать.

Таким образом, не нужно входить в оболочку и воссоздать ненужный нужный сайт.