Не удается войти в интерфейс Django / admin - PullRequest
16 голосов
/ 19 июля 2011

Прежде всего, я новичок. Я использую 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',
    ....
)

EDIT
Я также добавил

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-nonrel, так что вопрос больше не актуален. Должен ли я выбрать один ответ, чтобы дать кому-то несколько баллов?

Ответы [ 8 ]

23 голосов
/ 01 августа 2011

Существует некоторое ограничение в django-nonrel.

Для создания суперпользователя:

  • Остановка локального веб-сервера
  • Создание суперпользователя

    python manage.py createsuperuser
    
  • Запустите веб-сервер снова

    python manage.py runserver
    
6 голосов
/ 19 июля 2011

Если у вас есть правильное имя пользователя и пароль, единственное, что будет вести себя так же, как и при неудачной регистрации, - это is_staff=False для данного пользователя.

Зайдите в свою базу данных и проверьте auth_user.Таблица.Убедитесь, что для пользователя, которого вы используете для входа, is_staff установлено на TRUE.

5 голосов
/ 19 июля 2011

В urls.py раскомментируйте:

# Uncomment the next line to enable the admin:
**# url(r'^admin/', include(admin.site.urls)),**

и это должно сделать вас хорошими для гонок:)

PS. не забудьте запустить ./manage.py syncdb, и он попросит настроить пользователя с правами администратора.

4 голосов
/ 19 июля 2011

Не уверен в этом, но syncdb может удалить только что созданного вами суперпользователя. Попробуйте создать суперпользователя, когда syncdb предложит вам.

В противном случае взгляните на модель пользователя в ./manage.py shell. Чек User.objects.all()[0].is_superuser.

3 голосов
/ 05 июня 2014

Если вы, как и я, идиот, возможно, вы пытаетесь войти с помощью электронной почты, а не вашего имени пользователя.

Я думаю, что делал это, потому что при создании суперпользователя я запомнил ввод электронной почты, а не имени пользователя (потому что django предлагает вам имя пользователя без необходимости его ввода), и, возможно, обычное соглашение об использовании электронной почты для имен пользователей .. Man Я чувствую себя глупо, ха-ха.

2 голосов
/ 31 мая 2015

Я встречался с такой же ситуацией, как и вы.И я обнаружил, что переключил сервер аутентификации на

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».Таким образом, вы должны войти в свою страницу с учетной записью электронной почты.Если например

Имя пользователя: somebody@somewhere.com

пароль: пароль

Тогда это работаетНадеюсь, что это полезно для всех.

0 голосов
/ 18 июня 2017

Это не так сложно исправить. Прежде всего, убедитесь, что настройки по умолчанию

(DEBUG=TRUE,ALLOWED_HOST=[ ])

в файле настроек папки вашего сайта.

Зайдите в папку вашего сайта (используя командную строку) и введите следующую команду:

$ python manage.py createsuperuser
name:
email:e.g fulluser@admin.com
password:

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

0 голосов
/ 22 июля 2011

У меня была такая же проблема, и я не мог понять, почему я не мог войти, потому что все настройки были правильными.Тем не менее, я проследил его до Django, предложив мне имя суперпользователя, содержащее начальную заглавную букву, но фактически сохранив имя как полностью строчные!

Я естественно использовал имя суперпользователя с заглавными буквами (как предложено Django), и аутентификация не удалась,При проверке таблиц данных для проверки 'is_staff' и т. Д. Я обнаружил ошибку.Я знаю, что не ошибся, потому что я повторил процесс установки пару раз и отметил учетные данные суперпользователя, чтобы быть уверенным в деталях, таких как case.

Итак, будьте осторожны, принимая имя по умолчанию, предложенное Django!Это ложь!

...