可能重复:在Django中接受电子邮件地址作为用户名
与Django一起提供的身份验证模型基于用户名 .
如何根据电子邮件而不是用户名更改身份验证?
To be more specific :
使用用户名验证,登录用户我们执行以下操作:
user = authenticate(name,password)
.......
login(request,user)
如果我们使用电子邮件进行身份验证,请写上述语句的内容?
For form :
我打算编写自己的表单,显示字段电子邮件,密码和验证 . 这是正确的方法吗?
5 回答
我在阅读重复的问题时找到this snippet . 另请检查this code:
这两个答案都不是我的 . 向另一个主题投票给业主以获得业力提升 . 我只是在这里复制它们以使这个线程尽可能完整 .
查看this snippet,并阅读更新评论 .
对于表单,为什么不直接从(或直接使用)auth登录表单继承 . 请参阅django / contrib / auth / forms.py
请参阅以下链接,该链接说明了我们应该如何解决问题 .
http://groups.google.com/group/django-users/browse_thread/thread/c943ede66e6807c
听起来你可以用“电子邮件”这个词掩盖用户名,而所有用户名只会显示电子邮件 .
除非我错过了什么,否则解决方案应该非常简单;只需使用文本字段和密码字段创建一个普通表单 . 当HTTP请求方法是POST时,尝试使用给定的电子邮件地址获取用户 . 如果此类用户不存在,则表示您有错误 . 如果用户确实存在,请尝试对用户进行身份验证并将其登录 .