Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “如何更改Django身份验证视图”;PasswordResetView";要发送到手机号码和电子邮件的重新发送链接?_Python_Django_Django Views_Twilio_Django Authentication - Fatal编程技术网

Python “如何更改Django身份验证视图”;PasswordResetView";要发送到手机号码和电子邮件的重新发送链接?

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上,我想通过手机号码和电子邮件上发送的重置密码链接重置密码

我将Django项目配置为使用Twilio发送消息


我的问题是如何更改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