gpt4 book ai didi

Django password_reset 表单邮箱验证

转载 作者:行者123 更新时间:2023-12-05 06:29:54 25 4
gpt4 key购买 nike

Django password_reset 表单不检查电子邮件是否存在。还验证任何给定的电子邮件地址。

问题是,我如何检查并抛出自定义表单不存在的电子邮件的错误?

顺便说一下,我在 here 找到了以下解决方案但它对我不起作用。 (使用 Django 2.1)。如果这可行,我找不到我缺少的东西。

表单.py

class EmailValidationOnForgotPassword(PasswordResetForm):
def clean_email(self):
email = self.cleaned_data['email']
if not User.objects.filter(email__iexact=email, is_active=True).exists():
raise ValidationError("There is no user registered with the specified email address!")

return email

urls.py

path('sifre-sifirla/', PasswordResetView.as_view(), {'password_reset_form':EmailValidationOnForgotPassword}, name='password_reset'),

提前谢谢你。

编辑:

对于其他用户信息,问题由@Alasdair 回答并正在工作,但@pypypy 的观点也很重要。

urls.py 的变化如下:

path('sifre-sifirla/', PasswordResetView.as_view(form_class=EmailValidationOnForgotPassword), name='password_reset'),

最佳答案

从@Alasdair 摘录的部分总结上述讨论

#forms.py
from django.contrib.auth.forms import PasswordResetForm

class EmailValidationOnForgotPassword(PasswordResetForm):

def clean_email(self):
email = self.cleaned_data['email']
if not User.objects.filter(email__iexact=email, is_active=True).exists():
msg = _("There is no user registered with the specified E-Mail address.")
self.add_error('email', msg)
return email

#urls.py
from accounts.forms import EmailValidationOnForgotPassword

path('sifre-sifirla/', PasswordResetView.as_view(form_class=EmailValidationOnForgotPassword), name='password_reset'),

@pypypy,说这种方法可以用来获取用户名是正确的。 减少此问题的一种方法是在用户尝试 3 种不同的电子邮件时立即用 429 Too Many Requests 进行响应。这可以使用例如 django-ratelimit 来实现

关于Django password_reset 表单邮箱验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52947335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com