Django - Allauth не использует пользовательскую форму регистрации
Я работаю с Django-Allauth и React в качестве ИП. Я добавил параметр name для созданного мной пользовательского пользователя, переопределил форму SignupForm в Forms.py, чтобы сохранить ее, и, как сказано в документации, изменил settings.py, чтобы в нем было
ACCOUNT_FORMS = {'signup': 'XXXX.forms.CustomSignupForm'}
Но форма не инициируется при регистрации - я добавил отпечатки, которые не проходят. Пользователь создается - но, вероятно, с формой по умолчанию, и не добавляет дополнительный параметр, который я добавил. Я проверил, и фронтенд отправляет полезную нагрузку правильно.
У меня есть это в файле forms.py
class CustomUserCreationForm(UserCreationForm):
name = forms.CharField(max_length=30, required=True, help_text='Enter your name.')
class Meta:
model = CustomUser
fields = ("email", "name")
class CustomSignupForm(SignupForm):
name = forms.CharField(max_length=40, required=True, help_text='Enter your name.')
def __init__(self, *args, **kwargs):
print("CustomSignupForm is being initialized")
super().__init__(*args, **kwargs)
def save(self, request):
print("im working")
user = super().save(request)
user.name = self.cleaned_data['name']
user.save()
return user
urls.py
urlpatterns = [
path("admin/", admin.site.urls),
path('', include('XXXX.urls')),
path('accounts/', include('allauth.urls')),
path("_allauth/", include("allauth.headless.urls")),
]
Я также попробовал использовать ACCOUNT_ADAPTER в настройках, и вот как выглядит адаптер в adapters.py
class CustomAccountAdapter(DefaultAccountAdapter):
# def get_signup_form_class(self):
# return CustomSignupForm
Но он не использовал форму.
Также пытался редактировать CustomUserManager, но форма находится за шаг до него, если я не ошибаюсь, так что это тоже не помогло. Я пробовал искать везде, и в документации, но не смог найти решение или подсказку. Спасибо большое!
Важно помнить, что не существует
отображения форм с головками на полезную нагрузку без головок. Например, хотя необходимость
дважды вводить пароль имеет смысл в среде с головной формой, это бессмысленно
с точки зрения API. В результате, головные формы, которые могут быть переопределены
с помощью ACCOUNT_FORMS
не играют никакой роли в безголовом окружении.
Вместо того чтобы переопределять всю форму регистрации через ACCOUNT_FORMS
, предоставьте
ACCOUNT_SIGNUP_FORM_CLASS
, которая вытекает из forms.Form
и перечисляет только
дополнительные поля, которые вам нужны. Эти поля будут автоматически отображаться в
возглавляемой форме регистрации и будут автоматически проверяться при отправке полезной нагрузки в
конечной точке регистрации.