Не удается войти в интерфейс 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:

вернитесь в браузер и запустите сервер. Установите имя пользователя (а не адрес электронной почты) рядом с паролем, который вы создали ранее. На этот раз все будет хорошо.