Не удается войти в интерфейс Django / admin
прежде всего, я новичок. Я бегу!--3-->Ubuntu 11.04 которой входит Python 2.7, поэтому я установил Python2.5 в другом dir для запуска 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.сайт.URL-адреса)),
к urls.py в каталоге подпроектов.
EOEDIT
затем я создал суперпользователя и синхронизированные базы данных:
> python2.5 xxx-xxx-guestbook/manage.py createsuperuser python2.5
> xxx-xxx-guestbook/manage.py syncdb
затем запустил приложение и не может войти в систему. Я создал несколько разных supersusers всегда с тем же результатом.
EDIT2
спасибо каждый, кто пытается помочь, но, к сожалению, ни одно из предлагаемых решений не исправило проблему. Я решил сначала изучить Django самостоятельно, а затем, возможно, переключиться на GAE Django-nonrel, поэтому вопрос больше не актуален. Должен ли я выбрать один ответ, чтобы дать кому-то несколько очков?
8 ответов
не слишком уверен в этом, но syncdb может удалить суперпользователя, который вы только что создали. Попробуйте создать суперпользователя, когда syncdb предложит вам.
в противном случае, взгляните на модель пользователя на ./manage.py shell
. Проверка User.objects.all()[0].is_superuser
.
в django-nonrel есть какое-то ограничение.
для создания суперпользователя:
- остановить локальный веб-сервер
-
создать суперпользователя
python manage.py createsuperuser
-
запустите веб-сервер еще раз
python manage.py runserver
предполагая, что у вас есть правильное имя пользователя и пароль, единственное, что будет представлять такое же поведение, как неудачный вход в систему, имеет is_staff=False
для соответствующего пользователя.
зайдите в свою базу данных и проверьте таблицу auth_user. Убедитесь, что is_staff
установлено значение TRUE
на пользователя, который вы используете для входа в систему.
In urls.py uncomment:
# Uncomment the next line to enable the admin:
**# url(r'^admin/', include(admin.site.urls)),**
и это должно сделать вас хорошим для гонок:)
PS. не забудьте запустить a ./manage.py syncdb и он попросит настроить пользователя администратора.
Если вы идиот, как я, вы можете пытаться войти в систему с электронной почтой, а не с вашим именем пользователя.
Я думаю, что я делал это, потому что при создании суперпользователя я вспомнил, что ввел электронное письмо, а не имя пользователя (потому что django предлагает вам имя пользователя без необходимости вводить его), и, возможно, обычное соглашение об использовании электронных писем для имен пользователей.. Чувак, я чувствую себя глупо, ха-ха.
someproject.внутренний.EmailCheckmodelBackend
и в settings.py я добавил строку:
AUTHENTICATION_BACKENDS = ('someproject.внутренний.EmailCheckModelBackend',)
и backend-это как:
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
вы обнаружите, что на самом деле имя пользователя вынуждено быть чередуется с "электронной почтой". Таким образом, вы должны войти в свою страницу с учетной записью электронной почты. Если нравится
имя пользователя: someone@somewhere.com
пароль: пароль
тогда это работает. Надеюсь, это полезно для всех.
У меня была такая же проблема и не мог понять, почему я не мог войти, потому что все настройки были правильными. Однако я проследил его до Django, предлагая мне имя суперпользователя, содержащее начальную заглавную букву, но на самом деле сохраняя имя как полностью нижний регистр!
Я, естественно, использовал имя суперпользователя с заглавными буквами (как предложено Django), и аутентификация не удалась. При проверке таблиц данных для проверки 'is_staff' и т. д. Я заметил ошибку. Я знаю, что не ошибся. потому что я повторил процесс установки пару раз и отметил учетные данные суперпользователя, чтобы быть уверенным в таких деталях, как case.
Итак, мораль быть осторожным, принимая имя по умолчанию, предлагаемое Django! Это ложь!
это не так сложно исправить. Прежде всего убедитесь, что ваши настройки по умолчанию
(DEBUG=TRUE,ALLOWED_HOST=[ ])
в файле настроек папки вашего сайта.
войдите в папку вашего сайта (с помощью командной строки) и введите следующую команду:
$ python manage.py createsuperuser
name:
email:e.g fulluser@admin.com
password:
вернитесь в браузер и запустите сервер. Установите имя пользователя (а не адрес электронной почты) рядом с паролем, который вы создали ранее. На этот раз все будет хорошо.