django上的管理页面已损坏

时间:2012-01-13 00:53:26

标签: django django-admin

我已经设置了一个带有管理页面的django项目。它在开发的前几周完美运行,暂时没有使用管理页面,当我回到它时,管理页面被破坏了。无论我做什么,它都不允许我登录。

输入用户名和PW后,管理页面总是说:

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

我检查了数据库:超级用户存在并且is_active,is_superuser和is_staff都是True。我已经使用shell来确保密码正确。我已多次刷新,删除并重新创建数据库,以确保没有错误。我还对中间件,网址,INSTALLED_APPS等进行了双重检查,以确保它们都已正确设置。

据我所知,管理页面完美无缺,但他们从不让任何人登录。

任何想法在这里发生了什么,或其他尝试调试的方法?我对这个错误感到困惑。

PS:如果重要的话,我使用South进行数据库迁移,使用django-social-auth进行FB登录,并将local_settings.py用于生产和开发(我已经检查了它们 - 冲突是没有'那里。)

5 个答案:

答案 0 :(得分:17)

此问题可能与身份验证后端有关。 请检查您的设置文件以获取AUTHENTICATION_BACKENDS参数。

尝试以下值:

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

有关的更多信息 Official Django Documentation

答案 1 :(得分:1)

试试这个;在tests.py中:

from django.contrib import auth

class AuthTestCase(TestCase):
    def setUp(self):
        self.u = User.objects.create_user('test@dom.com', 'test@dom.com', '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='test@dom.com', password='pass')

然后使用python manage.py test <your_app_name>.AuthTestCase运行测试。如果通过,系统正在运行,可能会查看用户名和密码以确保它们可以接受。

答案 2 :(得分:0)

您可以执行以下操作:

  • 输入您的mysql(或其他数据库控制台)
  • 使用YourDATABASE;
  • 来自auth_user的SELECT *;
  • 观看is_staff和is_superuser项目
  • UPDATE auth_user SET is_staff =“1”其中username =“root”;

然后你可以再次登录!

答案 3 :(得分:0)

我遇到了同样的问题,但设置文件上的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('test@dom.com', '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='test@dom.com', password='pass')

还值得一提的是,我正在创建一个名为UserProfile的自定义用户

答案 4 :(得分:0)

您是否正在使用自定义用户模型并忘记将其添加到settings.py中?那就是我刚刚发生的事情。

# Substituting a custom User model

AUTH_USER_MODEL = "app_custom_auth.User"