在Django中忘记密码实现

时间:2011-03-31 10:23:48

标签: python django django-models django-templates django-views

我正在尝试在我的django应用程序中实现忘记密码功能。我给了一个单独忘记的密码。用户可以给他的电子邮件ID;如果该电子邮件已注册(在数据库中找到),则会获取该电子邮件的相应密码并将其发送到他的电子邮件ID。这正是我想要实现的。作为一个Django新手我坚持实施。这是我的 forgottenPassword.html

<form name="forgotPassword" method="POST" id="myFormid" action="http://10.1.0.90:8080/forgotPassword/">
<div style="float:center;width:100%;">
 Enter your E-mail ID</label><br/> <input type="text" name="email" size="25" /> 
 <input type="submit" value="Submit" />
 </div> 
</form >

我在views.py中的方法是

def forgotPassword(request):
    if request.POST:
        email=request.POST.get("email")
        print email
        user = UniversityDetails.objects.filter(email=email)
        print user
        if(not user):
            print "No user"
            return render_to_response("forgotPassword.html")
        else:   

            ???????????????
            return render_to_response("passwordRecovery.html")
    return render_to_response('forgotPassword.html')

在这里,我尝试实现的是传递在forgottenPassword.html中输入的电子邮件ID并将其保存在变量“email”中。之后,从数据库中获取带有该电子邮件的所有对象。并从中过滤密码。我想我放的部分????应填写查询以获取与该电子邮件ID对应的密码。有人可以帮我做这件事。

2 个答案:

答案 0 :(得分:21)

有(按设计)无法来执行此操作。您无法获取用户的密码,因为它仅作为安全散列存储在数据库中,并且无法撤消该散列。

但是,Django确实在contrib.auth中提供了内置的重置密码实现 - 请参阅the documentation

答案 1 :(得分:5)

rv_k,我只想说我建议您查看django.contrib.auth而不是当前系统,因为您将密码存储为纯文本。

也就是说,要回答您的问题,您已经提取了与该电子邮件匹配的UniversityDetails查询。假设每个“用户”只有一封电子邮件,请使用get查询。

user = UniversityDetails.objects.get(email=email)
send_mail("Your PW", user.password, "admin@example.com", [email])