Не удается войти в интерфейс Django/admin
Прежде всего, я новичок. Я запускаю Ubuntu 11.04, который поставляется с Python 2.7, поэтому я установил Python2.5 в другой каталог, чтобы запустить Django-Non-Rel в Google App Engine.
Я сделал учебник гостевой книги, и теперь я пытаюсь добавить доступ администратора, но когда я ввожу правильное имя пользователя: пароль Django считает его неправильным. Он даже не работает при развертывании в GAE. Если вы знаете, пожалуйста, соберите меня в правильном направлении.
Я добавил:
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
)
INSTALLED_APPS = (
...
'django.contrib.admin',
....
)
ИЗМЕНИТЬ
Я также добавил
url (r '^ admin/', include (admin.site.urls)),
в urls.py в каталоге подпроекта.
EOEDIT
Затем я создал суперпользователь и синхронизированные базы данных:
> python2.5 xxx-xxx-guestbook/manage.py createsuperuser python2.5
> xxx-xxx-guestbook/manage.py syncdb
Затем запустило приложение и не может войти в систему. Я создал несколько разных суперпользователей всегда с одинаковым результатом.
EDIT2
Спасибо всем за помощь, но, к сожалению, ни одно из предлагаемых решений не решило проблему. Я решил сначала изучить Django самостоятельно, а затем, возможно, переключиться на GAE Django-нереле, поэтому вопрос уже не имеет значения. Должен ли я по-прежнему выбирать один ответ, чтобы дать кому-то несколько баллов?
Ответы
Ответ 1
Не слишком уверен в этом, но syncdb может удалить суперпользователя, который вы только что создали. Попробуйте создать суперпользователя, когда вам будет предложено синхронизировать.
В противном случае ознакомьтесь с моделью пользователя в ./manage.py shell
. Проверьте User.objects.all()[0].is_superuser
.
Ответ 2
В django-нереле есть какое-то ограничение.
Чтобы создать суперпользователя:
- Остановить локальный веб-сервер
-
Создайте суперпользователя
python manage.py createsuperuser
-
Запустите веб-сервер снова
python manage.py runserver
Ответ 3
Предполагая, что у вас есть правильное имя пользователя и пароль, единственное, что будет представлять собой то же поведение, что и неудачный вход, имеет is_staff=False
для данного пользователя.
Зайдите в свою базу данных и просмотрите таблицу auth_user. Убедитесь, что для параметра is_staff
установлено значение TRUE
для пользователя, которого вы используете для входа.
Ответ 4
В urls.py uncomment:
# Uncomment the next line to enable the admin:
**# url(r'^admin/', include(admin.site.urls)),**
и это должно сделать вас полезными для рас:)
PS. не забудьте запустить. /manage.py syncdb, и он попросит настроить пользователя admin.
Ответ 5
Если вы идиот, как и я, вы можете попытаться войти в систему со своей электронной почтой, а не с вашим именем пользователя.
Я думаю, что я делал это, потому что при создании суперпользователя я вспомнил, что я ввел электронное письмо, а не имя пользователя (потому что django предлагает вам имя пользователя, не набирая его), и, возможно, обычное соглашение об использовании электронных писем для имен пользователей.. Man Я чувствую себя глупым ха-ха.
Ответ 6
Я встретил ту же ситуацию, что и вы. И я обнаружил, что переключил сервер аутентификации на
someproject.backends.EmailCheckmodelBackend
И в settings.py я добавил строку:
AUTHENTICATION_BACKENDS = ('someproject.backends.EmailCheckModelBackend',)
И бэкэнд выглядит так:
class EmailCheckModelBackend(ModelBackend):
def authenticate(self, username = None, password = None, is_staff = None):
try:
user = User.objects.get(email = username)
if user.check_password(password):
if is_staff is not None:
if user.is_staff == is_staff:
return user
else:
return None
return user
except User.DoesNotExist:
return None
Вы обнаружите, что имя пользователя принудительно заменяется на "email". Поэтому вам нужно зайти на свою страницу с учетной записью электронной почты.
Если нравится
Имя пользователя: [email protected]
пароль: пароль
Тогда он работает.
Надеюсь, что это полезно для всех.
Ответ 7
У меня была такая же проблема, и я не мог понять, почему я не смог войти, потому что все настройки были правильными. Тем не менее, я проследил его до Django, предлагая мне имя суперпользователя, содержащее начальную заглавную букву, но фактически сохраняя это имя как полностью строчное!
Я, естественно, использовал имя суперпользователя с capitals (как было предложено Django), и аутентификация завершилась неудачно. При проверке таблиц данных для проверки "is_staff" и т.д. Я обнаружил ошибку. Я знаю, что не ошибся, потому что пару раз повторял процесс установки и отмечал учетные данные суперпользователя, чтобы быть уверенными в деталях, подобных делу.
Итак, моральная осторожность при принятии имени по умолчанию, предлагаемого Django! Это!
Ответ 8
Это не так сложно исправить.
Прежде всего, убедитесь, что вы используете свои настройки по умолчанию
(DEBUG=TRUE,ALLOWED_HOST=[ ])
в файле настроек вашей папки веб-сайта.
Войдите в папку своего сайта (используя командную строку) и введите следующую команду:
$ python manage.py createsuperuser
name:
email:e.g [email protected]
password:
Вернитесь в браузер и запустите сервер. Задайте имя пользователя (а не адрес электронной почты) вместе с вашим паролем, который вы создали ранее. На этот раз он отлично справится.