如何在使用django-allauth時自定義用戶配置文件我有一個django-allauth app的django項目。我需要在注冊時從用戶處收集其他數據。我在這里遇到了類似的問題, 但不幸的是,沒有人回答了個人資料定制部分。根據提供的文件django-allauth:ACCOUNT_SIGNUP_FORM_CLASS(= None)指向自定義表單類(例如‘myapp.forms.SignupForm’)的字符串,用于在注冊期間向用戶請求其他輸入(例如,簡報注冊,出生日期)。此類應實現一個‘save’方法,接受新注冊的用戶作為其唯一參數。我是django的新手,我正在努力解決這個問題。有人可以提供這種自定義表單類的示例嗎?我是否需要添加一個模型類,以及一個鏈接到喜歡的用戶對象這個 ?
3 回答

小唯快跑啊
TA貢獻1863條經驗 獲得超2個贊
假設您想在注冊期間詢問用戶他的姓/名。您需要將這些字段放在您自己的表單中,如下所示:
class SignupForm(forms.Form): first_name = forms.CharField(max_length=30, label='Voornaam') last_name = forms.CharField(max_length=30, label='Achternaam') def signup(self, request, user): user.first_name = self.cleaned_data['first_name'] user.last_name = self.cleaned_data['last_name'] user.save()
然后,在您的設置中指向此表單:
ACCOUNT_SIGNUP_FORM_CLASS = 'yourproject.yourapp.forms.SignupForm'
就這樣。

繁星點點滴滴
TA貢獻1803條經驗 獲得超3個贊
使用pennersr建議的解決方案,我得到了一個DeprecationWarning:
DeprecationWarning: The custom signup form must offer a def signup(self, request, user) method DeprecationWarning)
這是因為從版本0.15開始,不推薦使用save方法,而采用def注冊(請求,用戶)方法。
所以要解決這個問題,示例的代碼應該是這樣的:
class SignupForm(forms.Form): first_name = forms.CharField(max_length=30, label='Voornaam') last_name = forms.CharField(max_length=30, label='Achternaam') def signup(self, request, user): user.first_name = self.cleaned_data['first_name'] user.last_name = self.cleaned_data['last_name'] user.save()
添加回答
舉報
0/150
提交
取消