2010-10-16 90 views
0

我在我的django应用程序中使用自定义auth后端,允许用户使用其他电子邮件登录。管理员在Django登录时更改表单验证

但是当我尝试在管理员登录我得到的消息:“用户名不能包含‘@’字符”

我想它到达AUTH后端之前提出了这个错误,所以它的形式问题, 对 ?

回答

1

不幸的是,如果认证失败并且没有用户使用给定的电子邮件,就会引发此错误。坏事是这个验证是硬编码的[1]。

这是[2]的开放门票。

由于1.2版本的django允许邮件为User.username,如果您使用的是这个版本,也许您甚至不需要自定义auth后端。但是bug [2]依然存在!

我可以看到,以除去此验证的唯一解决方案是创建定制AdminSite并重写login()方法,其是坏...

[1] http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/sites.py#L323 [2] http://code.djangoproject.com/ticket/13928