Python Can';t登录到Django/admin界面

Python Can';t登录到Django/admin界面,python,django,google-app-engine,django-nonrel,Python,Django,Google App Engine,Django Nonrel,首先,我是个新手。我正在运行Ubuntu11.04,它与Python 2.7一起提供,因此我在不同的目录中安装了Python2.5,以运行Django Non Rel on Google App Engine。 我做了留言簿教程,现在我试图添加管理员访问权限,但当我输入正确的用户名:密码时,Django认为它不正确部署到GAE时,它甚至不起作用。如果您知道,请给我指出正确的方向 我补充说: AUTHENTICATION_BACKENDS = ( 'django.contrib.auth

首先,我是个新手。我正在运行Ubuntu11.04,它与Python 2.7一起提供,因此我在不同的目录中安装了Python2.5,以运行Django Non Rel on Google App Engine。 我做了留言簿教程,现在我试图添加管理员访问权限,但当我输入正确的用户名:密码时,Django认为它不正确部署到GAE时,它甚至不起作用。如果您知道,请给我指出正确的方向

我补充说:

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

INSTALLED_APPS = (
    ...
    'django.contrib.admin',
    ....
)
编辑
我还补充说

url(r“^admin/”,包括(admin.site.url))

到子项目目录中的URL.py。
编辑

然后我创建了超级用户和同步数据库:

> python2.5 xxx-xxx-guestbook/manage.py createsuperuser python2.5
> xxx-xxx-guestbook/manage.py syncdb
然后运行应用程序,无法登录。我创建了多个不同的超级用户,结果总是一样的

编辑2

感谢大家的帮助,但不幸的是,所提供的解决方案都没有解决问题。我决定先自己学习Django,然后可能会转向GAE Django Norel,所以这个问题不再相关了。我还是应该选择一个答案来给某人打分吗?

在url.py取消注释中:

# Uncomment the next line to enable the admin:
**# url(r'^admin/', include(admin.site.urls)),**
这会让你在比赛中表现出色:)


请注意,不要忘记运行./manage.py syncdb,它将要求设置管理员用户。

假设您拥有正确的用户名和密码,唯一会显示与失败登录相同行为的是为相关用户设置
is_staff=False


进入数据库并检查auth_user表。确保您用于登录的用户的
is\u staff
设置为
TRUE

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


否则,请查看
/manage.py shell中的。检查
User.objects.all()[0]。is_superuser

我也遇到了同样的问题,无法理解为什么无法登录,因为所有设置都是正确的。然而,我追溯到Django为我提供了一个包含首字母大写的超级用户名,但实际上将该名称保存为完全小写

我自然地使用了大写的超级用户名(由Django提供),身份验证失败。在检查数据表以检查“is_staff”等时,我发现了错误。我知道我没有弄错,因为我重复了几次安装过程,并记录了超级用户凭据,以确保像case这样的细节


因此,在接受Django提供的默认名称时,要小心!这是谎言

在django Nonl中有某种限制

要创建超级用户,请执行以下操作:

  • 停止本地Web服务器
  • 创建超级用户

    python manage.py createsuperuser
    
  • 再次运行Web服务器

    python manage.py runserver
    

如果你像我一样是个白痴,你可能想用你的电子邮件而不是用户名登录


我想我之所以这么做是因为在创建超级用户时,我记得输入了一封电子邮件而不是用户名(因为django提供了一个用户名而不必键入),也许是因为通常的惯例是使用电子邮件作为用户名。。伙计,我觉得自己很傻哈哈。

我遇到的情况和你一样。我发现我把认证后端切换到了

someproject.backends.EmailCheckmodelBackend

在settings.py中,我添加了一行:

身份验证\后端=('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
您会发现,实际上用户名被强制替换为“电子邮件”。因此,您必须使用电子邮件帐户登录您的页面。 如果喜欢

用户名:someone@somewhere.com

密码:密码

然后它就起作用了。
希望这对每个人都有帮助。

修复起来并不难。 首先,确保允许您的默认设置

(DEBUG=TRUE,ALLOWED_HOST=[ ])
在网站文件夹的设置文件中

进入网站文件夹(使用命令提示符),然后键入以下命令:

$ python manage.py createsuperuser
name:
email:e.g fulluser@admin.com
password:

返回浏览器并运行服务器。将用户名(而不是电子邮件)与您先前创建的密码一起设置。这次肯定会很好。

谢谢,但我已经这么做了,只是忘了提一下。我无法取消它的注释,因为它不在那里,所以我只是在子项目目录中添加了它inurls.py。这就是我所做的,但它仍然不允许我登录到管理界面。工作非常出色。甚至不必停止/启动Web服务器。:-)谢谢,我正在使用Django Oscar,他们的文档遗漏了这一部分,甚至没有提到登录,所以谢谢,我也遇到了同样的问题,我相信BoGs的答案解决了这个问题。谢谢,这正是我在使用DRF时面临的问题。我已经在settings.py中更新了
身份验证\u BACKENDS
,以使用DRF auth BACKENDS。我解决了这个问题,将其添加到
身份验证\u BACKENDS
列表=>
'django.contrib.auth.BACKENDS.modelbend'
@SameerKumar欢迎您。这是我5年前回答的问题,现在仍然有效。英雄联盟