如何解决save() 接受 1 个位置参数,但 2 个被赋予了 djnago allauth resetpassword 形式
我需要在 allauth 重置密码表单中添加 recaptcha 字段,我根据 allauth documantion 覆盖表单
这是 forms.py 中的重置密码表单:
class MyCustomresetPasswordForm(ResetPasswordForm):
captcha = ReCaptchaField()
def save(self):
# Ensure you call the parent class's save.
# .save() returns a string containing the email address supplied
email_address = super(MyCustomresetPasswordForm,self).save()
# Add your own processing here.
# Ensure you return the original result
return email_address
在 settings.py 中:
ACCOUNT_FORMS = {'reset_password':'user.forms.MyCustomresetPasswordForm'}
但我收到此错误: TypeError at /accounts/password/reset/ save() 接受 1 个位置参数,但给出了 2 个
回溯切换到复制和粘贴视图 /home/admin1/envs/myvenv/lib/python3.8/site-packages/django/core/handlers/exception.py,第47行,内部 response = get_response(request) ... ▶ 本地变量 /home/admin1/envs/myvenv/lib/python3.8/site-packages/django/core/handlers/base.py,line 181,in _get_response 响应 =wrapped_callback(request,*callback_args,**callback_kwargs) ... ▶ 本地变量 /home/admin1/envs/myvenv/lib/python3.8/site-packages/django/views/generic/base.py,line 70,in view 返回 self.dispatch(request,*args,**kwargs) ... ▶ 本地变量 /home/admin1/envs/myvenv/lib/python3.8/site-packages/django/views/generic/base.py,line 98,in dispatch 返回处理程序(请求,*args,**kwargs)... ▶ 本地变量 /home/admin1/envs/myvenv/lib/python3.8/site-packages/allauth/account/views.py,第 102 行,在帖子中 response = self.form_valid(form) ... ▶ 本地变量 /home/admin1/envs/myvenv/lib/python3.8/site-packages/allauth/account/views.py,第690行,form_valid form.save(self.request) ...
解决方法
错误告诉您的是,您的 save() 方法只有一个参数,但是当它被调用时,它实际上得到了两个参数,这是因为 save() 方法有一个额外的参数 commit,正如您在 Django source code 上看到的那样。
您还应该将其添加到您的 super().save() 调用中。
您需要将它包含在您的 save() 定义中:
class MyCustomResetPasswordForm(ResetPasswordForm):
captcha = ReCaptchaField()
def save(self,commit=True):
# As evergreen pointed out,you don't need to pass any arguments to super() on Python 3.
email_address = super().save(commit)
# Add your own processing here.
# Ensure you return the original result
return email_address
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。