在Django中使用password_reset()进行reCaptcha

时间:2014-11-25 18:38:53

标签: python django

urls.py:

url(r'^password/reset/$', 'django.contrib.auth.views.password_reset', {'html_email_template_name': 'email_password.html'}, 'password_reset'), 

我已阅读this并查看了password_reset()的代码。

我需要在用户想要重置密码时使用reCaptcha - 在 password_reset()需要检查request.POST['g-recaptcha-response']并向Google发出请求(请求有效)。

但我不想在Django源代码中编写代码或使用像django-recaptcha这样的包。

如何重写 password_reset()或执行其他操作来解决此问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是创建自己的视图,该视图调用密码重置视图:

from django.contrib.auth.views import password_reset

def my_password_reset(request):
    # check captcha here
    return password_reset()

password_reset方法接收的参数之一是" password_reset_form",您要用于重置密码的表单的类。我建议,不要检查自定义视图上的验证码,而是在从 django.contrib.auth.forms.PasswordResetForm

扩展的新自定义表单中进行检查。