在Django中使用PasswordResetForm

时间:2013-10-17 22:45:26

标签: django django-authentication django-1.5

我的问题是:当我提交表单时,它会落入我在视图中定义的else:块中。

我想要完成的任务:允许用户使用django auth中内置的PasswordResetForm功能中的django 1.5重置密码

Views.py

def UserResetPassword(request):
    form = UserForgotPasswordForm(None, request.POST)
    if request.method == 'POST':
        if form.is_valid():
            form.save(from_email='admin@thedomain.com',email_template_name='mysite/reuse/forgotpassword.html', use_https=False,token_generator=default_token_generator, html_email_template_name=None)
        else:
            return HttpResponse("Are you sure you entered that correctly?")

    return render(request, 'mysite/reuse/forgotpassword.html', {
        'form':form
    })

提交表单后,会输出: Are you sure you entered that correctly?(例如从else:条件发送的值

我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

我看到了几个问题:

def UserResetPassword(request):
    form = UserForgotPasswordForm(request.POST or None) #data=is request.POST or None
    if request.method == 'POST':
        if form.is_valid():
            form.save(from_email = 'admin@thedomain.com', email_template_name= 'mysite/reuse/forgotpassword.html', use_https = False, token_generator = default_token_generator, html_email_template_name=None)

    return render(request, 'mysite/reuse/forgotpassword.html', {
        'form':form
    })

另外,摆脱else部分。您希望能够看到错误是什么。 render()会显示错误。

在表格中,

fields = ("email")

应该是

fields = ("email", )

另外,如果您想要一个允许用户输入旧密码来更改密码的表单,则应为using PasswordChangeForm