save() 接受 1 个位置参数,但给定了 2 个 django allauth 重置密码形式
save() takes 1 positional argument but 2 were given djnago allauth resetpassword form
我需要将 recaptcha 字段添加到 allauth 重置密码表单,我根据 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'}
但我收到此错误:
/accounts/password/reset/ 处出现类型错误
save() 接受 1 个位置参数,但给出了 2 个
Traceback 切换到复制粘贴视图
/home/admin1/envs/myvenv/lib/python3.8/site-packages/django/core/handlers/exception.py,第 47 行,在内部
响应 = get_response(请求)...
▶ 本地变量
/home/admin1/envs/myvenv/lib/python3.8/site-packages/django/core/handlers/base.py,第 181 行,在 _get_response
响应 = wrapped_callback(请求, *callback_args, **callback_kwargs) ...
▶ 本地变量
/home/admin1/envs/myvenv/lib/python3.8/site-packages/django/views/generic/base.py,第 70 行,可见
return self.dispatch(请求, *args, **kwargs) …
▶ 本地变量
/home/admin1/envs/myvenv/lib/python3.8/site-packages/django/views/generic/base.py,第 98 行,正在调度中
return 处理程序(请求,*args,**kwargs)...
▶ 本地变量
/home/admin1/envs/myvenv/lib/python3.8/site-packages/allauth/account/views.py,第 102 行,在 post
响应 = self.form_valid(表格) …
▶ 本地变量
/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
我需要将 recaptcha 字段添加到 allauth 重置密码表单,我根据 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'}
但我收到此错误: /accounts/password/reset/ 处出现类型错误 save() 接受 1 个位置参数,但给出了 2 个
Traceback 切换到复制粘贴视图 /home/admin1/envs/myvenv/lib/python3.8/site-packages/django/core/handlers/exception.py,第 47 行,在内部 响应 = get_response(请求)... ▶ 本地变量 /home/admin1/envs/myvenv/lib/python3.8/site-packages/django/core/handlers/base.py,第 181 行,在 _get_response 响应 = wrapped_callback(请求, *callback_args, **callback_kwargs) ... ▶ 本地变量 /home/admin1/envs/myvenv/lib/python3.8/site-packages/django/views/generic/base.py,第 70 行,可见 return self.dispatch(请求, *args, **kwargs) … ▶ 本地变量 /home/admin1/envs/myvenv/lib/python3.8/site-packages/django/views/generic/base.py,第 98 行,正在调度中 return 处理程序(请求,*args,**kwargs)... ▶ 本地变量 /home/admin1/envs/myvenv/lib/python3.8/site-packages/allauth/account/views.py,第 102 行,在 post 响应 = self.form_valid(表格) … ▶ 本地变量 /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