2016-11-14 15 views
1

私はdjango-appの認証/登録にdjango-alluthを使用しています。 そして私は1つのフィールド、すなわち電子メールでカスタムサインアップフォームを作成する必要があります。パスワードはサーバー上で生成されます。 settings.pyでユーザ登録時にパスワードを送信する、django-allauth

from django import forms 
from users.models import User 


class SignupForm(forms.ModelForm): 
    email = forms.CharField() 

    class Meta: 
     model = User 
     fields = ['email',] 
     esclude = ['password1', 'password'] 

    def __init__(self, *args, **kwargs): 
     super(SignupForm, self).__init__(*args, **kwargs) 
     del self.fields['password1'] 
     del self.fields['password2'] 

    def signup(self, request, user): 
     password = str(User.objects.make_random_password()) 
     user.set_password(password) #!!!!!!! HERE 
     user.save() 

:ここに私が作成したフォームで

ACCOUNT_SIGNUP_FORM_CLASS = 'users.forms.SignupForm' 

そして今、私は自分のパスワードを持つユーザーに電子メールを送信する必要があります。もちろん、私はsignupメソッドでこれを行うことができますが、フォームの情報の収集と確認にのみ必要なので、これは良い方法ではありません。

user_signed_up django-allauthシグナルを聞くのは良いでしょうが、パスワードがハッシュで保存されているため、ユーザーパスワードを取得することはできません。信号に追加パラメータを渡す方法はありますか?それともメールを送信する方法がいくつかありますか?

ありがとうございます。

答えて

1

申し込み方法でやりたくない場合は、フォーム内ではなく、ビュー内で申し込みを行ってください。

パスワードにアクセスできる唯一のタイミングは、パスワードを作成してユーザーに渡すときです。そのユーザーに送信する必要があります。

+0

うん、ありがとう。私は 'utils.py'ファイルを作成し、そこに電子メールを送る機能を定義することで解決しました。 –

関連する問題