重新排序django.contrib.auth和allauth中的UserCreationFrom字段



我正在尝试使用django.contrib.auth重新排序用户注册表单中的字段。然而,似乎有一些字段(用户名,电子邮件和密码)我无法重新排序,我认为可能来自django allauth。

settings.py

ACCOUNT_SIGNUP_FORM_CLASS = 'users.forms.UserCreationForm'

forms.py

class UserCreationForm(UserCreationForm):
error_message = UserCreationForm.error_messages.update(
{
"duplicate_username": _(
"This username has already been taken."
)
}
)
first_name = forms.CharField(max_length=12, min_length=4, required=True,
widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'First Name'}))
last_name = forms.CharField(max_length=12, min_length=4, required=True,
widget=(forms.TextInput(attrs={'class': 'form-control'})))
email = forms.EmailField(max_length=50, help_text='Required. Inform a valid email address.',
widget=(forms.TextInput(attrs={'class': 'form-control'})))
password1 = forms.CharField(label=_('Password'),
widget=(forms.PasswordInput(attrs={'class': 'form-control'})),
help_text=password_validation.password_validators_help_text_html())
password2 = forms.CharField(label=_('Password Confirmation'), widget=forms.PasswordInput(attrs={'class': 'form-control'}),
help_text=_('Just Enter the same password, for confirmation'))
username = forms.CharField(
label=_('Username'),
max_length=150,
help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
validators=[username_validator],
error_messages={'unique': _("A user with that username already exists.")},
widget=forms.TextInput(attrs={'class': 'form-control'})
)
class Meta(UserCreationForm.Meta):
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2',)
def clean_username(self):
username = self.cleaned_data["username"]
try:
User.objects.get(username=username)
except User.DoesNotExist:
return username
raise ValidationError(
self.error_messages["duplicate_username"]
)

我可以重新排序姓和名字段,但这些字段总是排在用户名、电子邮件和密码下面。

可以使用field_order指定字段的结构顺序。

一样:

class UserCreationForm(UserCreationForm):

[.. fields ..]
class Meta(UserCreationForm.Meta):
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2',)
field_order = ['username', 'email', 'password1', 'password2','first_name', 'last_name']

相关内容

最新更新