Python “如何更改Django身份验证视图”;PasswordResetView";要发送到手机号码和电子邮件的重新发送链接?
我有一个自定义用户模型和自定义后端,用于通过手机号码和电子邮件进行身份验证 我想让我的用户能够通过电子邮件和手机号码重置密码,即,在PasswordResetView上,我想通过手机号码和电子邮件上发送的重置密码链接重置密码 我将Django项目配置为使用Twilio发送消息Python “如何更改Django身份验证视图”;PasswordResetView";要发送到手机号码和电子邮件的重新发送链接?,python,django,django-views,twilio,django-authentication,Python,Django,Django Views,Twilio,Django Authentication,我有一个自定义用户模型和自定义后端,用于通过手机号码和电子邮件进行身份验证 我想让我的用户能够通过电子邮件和手机号码重置密码,即,在PasswordResetView上,我想通过手机号码和电子邮件上发送的重置密码链接重置密码 我将Django项目配置为使用Twilio发送消息 我的问题是如何更改PasswordResetView以实现这一点。我们需要覆盖视图的form_类 然后为了实现身份验证自定义逻辑,我们需要覆盖PasswordResetView拥有的这个默认form_类的save方法,即。
我的问题是如何更改PasswordResetView以实现这一点。我们需要覆盖视图的form_类 然后为了实现身份验证自定义逻辑,我们需要覆盖PasswordResetView拥有的这个默认form_类的save方法,即。这个类有一个函数,我们需要重写它。此外,我们可以编写其自定义的clean方法,并添加任何其他字段,在本例中,添加一个mobile number字段。 在用手机号码字段抓取用户后,我们可以为他们生成令牌,如图所示。使用此令牌,我们将创建一个链接,并使用任何消息传递客户端(如Twilio)发送到用户的手机号码
我认为您需要重写
密码重置视图
并编写您自己的自定义逻辑谢谢@achityaranjanchaudhary!如果您能告诉我如何覆盖它,那就太好了,因为我没有找到任何文档来帮助您。
####### Your views.py #######
class PasswordResetViewOverride(auth_views.PasswordResetView):
form_class = PasswordResetFormOverride
class PasswordResetFormOverride(PasswordResetForm):
mobile_no = forms.CharField(
label="Your Accounts' Mobile Number",
max_length=10,
widget=forms.NumberInput(),
required=False,
)
def save(self, domain_override=None,
subject_template_name='registration/password_reset_subject.txt',
email_template_name='registration/password_reset_email.html',
use_https=False, token_generator=default_token_generator,
from_email=None, request=None, html_email_template_name=None,
extra_email_context=None):
mobile_no = self.cleaned_data.get("mobile_no", "")
# All the previous stuff
if mobile_no != "":
# Send reset link to mobile logic
# All the previous stuff