django上的管理页面已损坏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django上的管理页面已损坏相关的知识,希望对你有一定的参考价值。

我已经设置了一个带有管理页面的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等进行了双重检查,以确保它们都已正确设置。

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

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

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

答案

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

请尝试以下值:

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

有关Official Django Documentation的更多信息

另一答案

试试这个;在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运行测试。如果通过,系统正在运行,可能会查看用户名和密码以确保它们可以接受。

另一答案

您可以执行以下操作:

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

然后你可以再次登录!

另一答案

我有同样的问题,但设置文件上的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的自定义用户

以上是关于django上的管理页面已损坏的主要内容,如果未能解决你的问题,请参考以下文章

损坏的顶点和片段着色器

对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 错误解决一例。(代码片段

Django 迁移损坏,不会忘记已删除的列

windows系统日志提示“磁盘上的文件系统结构已损坏,不能使用。”解决办法

UIButton 上的标签显示已损坏

为 Blogger 上的博客格式化代码片段 [关闭]