Django Allauth 替换标签
Django Allauth replace labels
我有下面的表格,ACCOUNT_SIGNUP_FORM_CLASS
指向
class SignupForm(forms.Form):
def __init__(self, *args, **kwargs):
super(SignupForm, self).__init__(*args, **kwargs)
for field_name in self.fields.keys():
print(field_name, self.fields[field_name].label)
我正在尝试替换以下每个字段的标签:username
、email
、password1
和 password2
。启动表单时,将打印以下内容。
username Username
email None
但是我浏览器中呈现的表单显示了所有带有标签的字段
Username*
E-mail*
Password*
Password (again)*
为什么只有 username
和 email
被打印,为什么 email
字段标签是 None
但它在渲染时显示得很好.
我怎样才能更改所有四个字段的标签?
您不能在 ACCOUNT_SIGNUP_FORM_CLASS
上设置的表单上执行此操作。该表单用作 allauth 的 SignupForm 的基础 class。因此您不能更改任何字段,因为它不存在于该表单中(仅存在于 subclass 中)。要做你想做的事,你必须从 django allauth 子class SignupForm 并将其用作真正的注册表单,可以像这样设置:
# On settings
ACCOUNT_FORMS = {'signup': 'path.to.custom.singup.form'}
自定义注册表单必须继承自 django allauth singup 表单,如下所示:
from allauth.account.forms import SignupForm
class CustomSignupForm(SignupForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# here you can change the fields
self.fields['email'] = forms.EmailField(label='custom label')
我有下面的表格,ACCOUNT_SIGNUP_FORM_CLASS
指向
class SignupForm(forms.Form):
def __init__(self, *args, **kwargs):
super(SignupForm, self).__init__(*args, **kwargs)
for field_name in self.fields.keys():
print(field_name, self.fields[field_name].label)
我正在尝试替换以下每个字段的标签:username
、email
、password1
和 password2
。启动表单时,将打印以下内容。
username Username
email None
但是我浏览器中呈现的表单显示了所有带有标签的字段
Username*
E-mail*
Password*
Password (again)*
为什么只有 username
和 email
被打印,为什么 email
字段标签是 None
但它在渲染时显示得很好.
我怎样才能更改所有四个字段的标签?
您不能在 ACCOUNT_SIGNUP_FORM_CLASS
上设置的表单上执行此操作。该表单用作 allauth 的 SignupForm 的基础 class。因此您不能更改任何字段,因为它不存在于该表单中(仅存在于 subclass 中)。要做你想做的事,你必须从 django allauth 子class SignupForm 并将其用作真正的注册表单,可以像这样设置:
# On settings
ACCOUNT_FORMS = {'signup': 'path.to.custom.singup.form'}
自定义注册表单必须继承自 django allauth singup 表单,如下所示:
from allauth.account.forms import SignupForm
class CustomSignupForm(SignupForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# here you can change the fields
self.fields['email'] = forms.EmailField(label='custom label')