无法登录Django/admin界面

nan*_*ana 17 python django google-app-engine django-nonrel

首先,我是新手.我正在运行带有Python 2.7的Ubuntu 11.04,所以我在不同的目录中安装了Python2.5,以便在Google App Engine上运行Django-Non-Rel.我做了留言簿教程,现在我正在尝试添加管理员权限但是当我输入正确的用户名时:密码Django认为它不正确.它在部署到GAE时甚至不起作用.如果你知道的话请捅我正确的方向.

我补充说:

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

INSTALLED_APPS = (
    ...
    'django.contrib.admin',
    ....
)
Run Code Online (Sandbox Code Playgroud)

编辑
我也补充说

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
Run Code Online (Sandbox Code Playgroud)

然后运行应用程序,无法登录.我创建了多个不同的超级用户,总是有相同的结果.

EDIT2

感谢大家尝试提供帮助,但不幸的是,所提供的解决方案都没有解决问题.我决定先自己学习Django,然后转换到GAE Django-nonrel,所以这个问题不再适用了.我还应该选择一个答案给某人一些积分吗?

Dav*_*cia 25

django-nonrel有一些限制.

要创建超级用户:

  • 这就是我所做的,但它仍然不会让我登录到管理界面. (6认同)

Chr*_*att 6

假设您拥有正确的用户名和密码,那么唯一会出现与登录失败相同的行为的是is_staff=False对相关用户.

进入数据库并检查auth_user表.确保将is_staff其设置为TRUE您用于登录的用户.


小智 5

在urls.py取消注释:

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

这应该会让你对比赛有好处:)

PS.不要忘记运行./manage.py syncdb,它会要求设置管理员用户.


小智 5

对此不太确定,但syncdb可能会删除您刚刚创建的超级用户。当syncdb提示您时,尝试创建一个超级用户。

否则,看看中的用户模型./manage.py shell。查看User.objects.all()[0].is_superuser


GP8*_*P89 5

如果您像我一样是个白痴,您可能会尝试使用电子邮件而不是用户名登录。

我想我这样做是因为在创建超级用户时,我记得输入的是电子邮件而不是用户名(因为 django 为您提供了用户名而无需键入它),也许是使用电子邮件作为用户名的通常惯例.. 伙计,我觉得很愚蠢哈哈。


dot*_*ash 5

我也遇到过和你一样的情况。我发现我将身份验证后端切换到

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
Run Code Online (Sandbox Code Playgroud)

您会发现实际上用户名被迫由“电子邮件”替代。因此,您必须使用电子邮件帐户登录您的页面。如果喜欢

用户名:someone@somewhere.com

密码:密码

然后它起作用了。希望这对大家有帮助。

  • 非常感谢,这是我在使用 DRF 时遇到的问题。我已更新 settings.py 中的“AUTHENTICATION_BACKENDS”以使用 DRF 身份验证后端。我通过将其添加到 `AUTHENTICATION_BACKENDS` 列表 => `'django.contrib.auth.backends.ModelBackend'` 解决了这个问题 (2认同)