Python Can';t登录到Django/admin界面
首先,我是个新手。我正在运行Ubuntu11.04,它与Python 2.7一起提供,因此我在不同的目录中安装了Python2.5,以运行Django Non Rel on Google App Engine。 我做了留言簿教程,现在我试图添加管理员访问权限,但当我输入正确的用户名:密码时,Django认为它不正确部署到GAE时,它甚至不起作用。如果您知道,请给我指出正确的方向 我补充说: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
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年前回答的问题,现在仍然有效。英雄联盟