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

Страница администратора на django нарушена

Я создал проект django с административной страницей. Он отлично работал в течение первых двух недель разработки, не использовал страницу администратора некоторое время, и когда я вернулся к ней, страница администратора была сломана. Независимо от того, что я делаю, он не позволит мне войти.

После ввода имени пользователя и PW страница администратора всегда говорит:

Please enter a correct username and password. Note that both fields are case-sensitive. 

Я проверил БД: суперпользователь существует и имеет is_active, is_superuser и is_staff все True. Я использовал оболочку, чтобы убедиться, что пароль правильный. Я покраснел, удалил и повторно создал базу данных несколько раз, чтобы не допустить ошибки. Я также дважды проверял промежуточное ПО, URL-адреса, INSTALLED_APPS и т.д., Чтобы убедиться, что все они настроены правильно.

Насколько я могу судить, страницы администратора работают отлично, за исключением того, что они никогда не позволяют никому войти в систему.

Любые идеи, что происходит здесь, или другие методы для отладки? Я действительно озадачен этой ошибкой.

PS: В случае, если это имеет значение, я использую Юг для миграции DB, django-social-auth для входа в систему FB и отдельный файл local_settings.py для производства и разработки (я проверил их оба - конфликт isn ' t там.)

4b9b3361

Ответ 1

Эта проблема может быть связана с сервером аутентификации. Проверьте файлы настроек для параметра AUTHENTICATION_BACKENDS.

Попробуйте следующее значение:

AUTHENTICATION_BACKENDS = (
    ('django.contrib.auth.backends.ModelBackend'),
)

Дополнительная информация о Официальная документация по Django

Ответ 2

Попробуйте это; в tests.py:

from django.contrib import auth

class AuthTestCase(TestCase):
    def setUp(self):
        self.u = User.objects.create_user('[email protected]', '[email protected]', 'pass')
        self.u.is_staff = True
        self.u.is_superuser = True
        self.u.is_active = True
        self.u.save()

    def testLogin(self):
        self.client.login(username='[email protected]', password='pass')

Затем запустите тест с помощью python manage.py test <your_app_name>.AuthTestCase. Если это пройдет, система работает, возможно, посмотрите на имя пользователя и пароль, чтобы убедиться, что они приемлемы.

Ответ 3

Вы можете сделать следующее:

  • Введите ваш mysql (или другую консоль базы данных)
  • ИСПОЛЬЗУЙТЕ свою базу данных;
  • SELECT * от auth_user;
  • watch is_staff и is_superuser item
  • UPDATE auth_user SET is_staff = "1" где username = "root";

Затем вы можете снова войти в систему!

Ответ 4

У меня была такая же проблема, но флаг AUTHENTICATION_BACKENDS в файле настроек не был для меня проблемой. Используя Django Rest Framework каким-то образом я изменил пароль без вызова set_password, поэтому минуя хеширование пароля. Поэтому он указал неверный логин.

Я смог обнаружить проблему, выполнив простой тест, чтобы протестировать создание пользователя с помощью аналогичного теста:

from django.test import TestCase

from django.contrib import auth
from .models import *

class AuthTestCase(TestCase):
    def setUp(self):
        self.u = UserProfile.objects.create_user('[email protected]', 'iamtest', 'pass')
        self.u.is_staff = True
        self.u.is_superuser = True
        self.u.is_active = True
        self.u.save()

    def testLogin(self):
        self.client.login(username='[email protected]', password='pass')

Также стоит отметить, что я создавал пользовательский пользователь с именем UserProfile