扩展SignupForm类的allauth问题

2024-09-30 04:37:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在寻找似乎行不通的过时解决方案。在

我正在尝试将错误信息从英语改为希伯来语,对于我在django allauth的网站,我没有检查他们是否有任何翻译,因为我想写他们自己无论如何。在

例如,我尝试用以下代码更改重复电子邮件错误。在

表单.py

from allauth.account.forms import SignupForm

class CustomSignupForm(SignupForm):
    def raise_duplicate_email_error(self):
        raise forms.ValidationError("שם משתמש כבר קיים עם כתובת אימייל")

基准.py(基本设置文件)

^{pr2}$

这导致以下错误:

__init__() got an unexpected keyword argument 'sociallogin'

回溯:

File "/home/david/.virtualenvs/sikumim/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/david/.virtualenvs/sikumim/lib/python3.4/site-packages/django/views/generic/base.py" in view
  71.             return self.dispatch(request, *args, **kwargs)
File "/home/david/.virtualenvs/sikumim/lib/python3.4/site-packages/allauth/socialaccount/views.py" in dispatch
  38.         return super(SignupView, self).dispatch(request, *args, **kwargs)
File "/home/david/.virtualenvs/sikumim/lib/python3.4/site-packages/allauth/account/views.py" in dispatch
  68.                                             **kwargs)
File "/home/david/.virtualenvs/sikumim/lib/python3.4/site-packages/allauth/account/views.py" in dispatch
  151.                                                           **kwargs)
File "/home/david/.virtualenvs/sikumim/lib/python3.4/site-packages/django/views/generic/base.py" in dispatch
  89.         return handler(request, *args, **kwargs)
File "/home/david/.virtualenvs/sikumim/lib/python3.4/site-packages/django/views/generic/edit.py" in get
  205.         form = self.get_form()
File "/home/david/.virtualenvs/sikumim/lib/python3.4/site-packages/django/views/generic/edit.py" in get_form
  74.         return form_class(**self.get_form_kwargs())
File "/home/david/.virtualenvs/sikumim/lib/python3.4/site-packages/allauth/account/forms.py" in __init__
  289.         super(SignupForm, self).__init__(*args, **kwargs)
File "/home/david/.virtualenvs/sikumim/lib/python3.4/site-packages/allauth/account/forms.py" in __init__
  223.         super(BaseSignupForm, self).__init__(*args, **kwargs)

Exception Type: TypeError at /accounts/social/signup/
Exception Value: __init__() got an unexpected keyword argument 'sociallogin'

我做错什么了?在


Tags: djangoinpyselfhomelibpackagessite
2条回答

您需要重写__init__()方法并将sociallogin定义为参数,然后该参数将不会传递给超级类的__init__()方法。在

像这样:

def __init__(self, sociallogin=None, *args, **kwargs):
    super().__init__(*args, **kwargs)

您继承的是allauth.account.forms.SignupForm但在设置SOCIALACCOUNT_FORMS中使用它,这是用于社交帐户的。您的代码应该如下所示:

网站/表单.py

from allauth.socialaccount.forms import SignupForm

class CustomSignupForm(SignupForm):
     def raise_duplicate_email_error(self):
         raise forms.ValidationError("שם משתמש כבר קיים עם כתובת אימייל")

设置.py

^{pr2}$

相关问题 更多 >

    热门问题