在Django中正确使用PasswordResetForm

时间:2013-09-22 23:51:36

标签: django authentication passwords password-recovery

我正在尝试使用django假设的PasswordResetForm功能为我的django应用程序创建密码重置表单。

我在 forms.py

中创建了一个表单
class UserForgotPasswordForm(PasswordResetForm):
    email = forms.EmailField(required=True,max_length=254)
    class Meta:
        model = User
        fields = ("email")

我在 views.py 中设置view时无法使用此表单,我目前有:

def UserResetPassword(request):
    form = UserForgotPasswordForm(None, request.POST)
    if request.method == 'POST':
        if form.is_valid():
            email = request.POST.get('email', '')
            user = 

我的 urls.py

urlpatterns = patterns('',
    (r'^ForgotPassword/$',UserResetPassword),
)

由于我发现的文档很少且通常不直接使用PasswordResetForm django功能,所以我有点失去了如何进一步使用它。

有人能伸出援手吗?

谢谢。

1 个答案:

答案 0 :(得分:4)

我相信您需要做的就是调用form.save(),PasswordResetForm将生成一次性使用链接并将其通过电子邮件发送给用户。它查找匹配输入表单的电子邮件的用户。

所以它会是这样的:

def UserResetPassword(request):
    form = UserForgotPasswordForm(None, request.POST)
    if request.method == 'POST':
        if form.is_valid():
            form.save(from_email='blah@blah.com', email_template_name='path/to/your/email_template.html')

如果您没有指定电子邮件模板名称,django将只使用the default one