2

私は非アクティブなユーザーを作成しており、アカウントを作成するときに django-registration が送信するようなアカウントをアクティブ化するための電子メールを送信したいと考えています。

これは私のviews.pyです

user = User.objects.create_user(userName, userMail,userPass)
 user.is_active=False
 user.save()
4

2 に答える 2

1

電子メールの送信に関するトピック ガイドを確認する必要があります。基本的にdjango.core.mail、ユーザー インスタンスを作成した後、 のコンポーネントを使用して、必要なすべての情報を含むアクティベーション メールを送信するだけです。

そのメールには、ユーザーがアカウントを有効にする方法に関する詳細情報が含まれていることが重要です。その方法は、アクティベーションビューで使用される一意の識別子を指定django-registrationしたインスタンスに関連付けられた別のモデルを持っていることです。つまり、リクエストを作成すると、ユーザーアカウントがアクティベートされます。関連する UUID。UserGEThttp://foo/accounts/activate/550e8400-e29b-41d4-a716-446655440000

django-registration少し時代遅れ(つまり、クラスベースのビューがない)にもかかわらず、徹底的で洗練されたソリューションを作成する複雑な詳細が他にもいくつかあります。公式リポジトリとぼったくりして、必要なすべてのビットを複製します。

于 2013-04-24T08:54:49.990 に答える
0

基本的に、ユーザーがサインアップした後、user.is_active=False を設定します。

次に、ユーザーの情報 (id など) を含む URL をユーザーの電子メールに送信します。

ユーザーがリンクをクリックすると、アクティベーション機能がトリガーされます。アクティベーション関数内では、最初に URL (id) に基づいてユーザーの情報を抽出します。次に、user.objects.get(id=id) を呼び出して、ユーザー オブジェクトを照会できます。その後、user.is_active=True を設定してユーザーを保存できます。

電子メールを送信するコードは次のとおりです。 from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart

    fromaddr='your email address' #(Gmail here)
    username='your user name'
    password='your password'
    def send_email(toaddr,id):
        text = "Hi!\nHow are you?\nHere is the link to activate your
        account:\nhttp://127.0.0.1:8000/register_activate/activation/?id=%s" %(id)
        part1 = MIMEText(text, 'plain')
        msg = MIMEMultipart('alternative')
        msg.attach(part1)
        subject="Activate your account "
        msg="""\From: %s\nTo: %s\nSubject: %s\n\n%s""" % (fromaddr,toaddr,subject,msg.as_string())
        #Use gmail's smtp server to send email. However, you need to turn on the setting "lesssecureapps" following this link:
        #https://www.google.com/settings/security/lesssecureapps
        server = smtplib.SMTP('smtp.gmail.com:587')
        server.ehlo()
        server.starttls()
        server.login(username,password)
        server.sendmail(fromaddr,[toaddr],msg)
        server.quit()

こちらもご覧ください : https://github.com/JunyiJ/django-register-activate

于 2016-05-17T01:00:35.950 に答える