Страница администратора на 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 там.)
Ответы
Ответ 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