1. ホーム
  2. django

[解決済み] django-allauthを使用する際のユーザープロファイルのカスタマイズ方法

2022-09-15 20:45:30

質問

私はdjango-allauthアプリでdjangoプロジェクトを持っています。私はサインアップ時にユーザーから追加のデータを収集する必要があります。私は同様のものに出会った の質問を見つけました。 を見つけましたが、残念ながら、プロファイルのカスタマイズ部分については誰も回答していません。

につきまして に提供されているドキュメントでは django-allauth :

ACCOUNT_SIGNUP_FORM_CLASS (= None )

カスタムフォームクラスを指す文字列 (例えば ‘myapp.forms.SignupForm’ を指す文字列。サインアップ時に使用され、ユーザーに追加の入力 (例: ニュースレターのサインアップ、生年月日) を要求します。) このクラスは ‘save’ メソッドを実装し、新しくサインアップしたユーザーを唯一のパラメーターとして受け入れます。

私は django の初心者で、これと格闘しています。どなたか、そのようなカスタムフォームクラスの例を示していただけませんか?また、次のようなユーザーオブジェクトへのリンクを持つモデルクラスも追加する必要がありますか? この ?

どのように解決するのですか?

サインアップの際に、ユーザーに姓名を尋ねたいとします。以下のように、これらのフィールドをあなた自身のフォームに置く必要があります。

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'

なお SignupForm によるフォームオーバーライドと同じファイルでは定義できません。 ACCOUNT_FORMS または SOCIALACCOUNT_FORMS というのは、循環インポートエラーにつながるからです。

以上です。