2

django-registration アプリを理解しようとしていますが、アクティベーション キーを使用してユーザーにメールを送信できるようになりました。私が理解できないのは、ユーザーがメールのリンクをクリックしたときにアクティベーションキーをサーバーに送り返す方法です。

class AbstractEmailUser(AbstractBaseUser, PermissionsMixin):
      .....
       .....
   def send_activation_email(self, email):  
    email = email   
    ctx_dict = { 'activation_key' : self.activation_key,
             'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS,
                                                                }

    subject = render_to_string('activation_email_subject.txt', ctx_dict)
    subject = ''.join(subject.splitlines())
    message = render_to_string('activation_email.txt', ctx_dict)

    send_mail(subject, message, 'gccFishing.com', [email],  fail_silently = False)

   def activate(self, activation_key):
    if SHA1_RE.search(activation_key):
        try:
        self.get(activation_key = activation_key)
        except:
        self.model.DoesNotExist
        return False
        if not self.activation_key_expired():
        self.is_active = True
        self.activation_key = self.model.ACTIVATED
        self.save()
        return self
    return False

withactivation_email.txt を呼び出すリンクを作成するには、どのコードを内部に入れる必要がありますか? または、それを行うより良い方法はありますか?activate methodactivation_key

どんな助けも素晴らしいでしょう。ありがとう

4

1 に答える 1

1

サイトの django アプリを使用している場合は、電子メールで次のようなことを試してください。

http://{{ site.domain }}{% url registration_activate activation_key %}

または、サイトの DNS で site.domain を変更します。君の

私の記憶が正しければ、django-registration のテンプレートには既に activation_email.txt の例が含まれているので、チェックしてみてください。

アップデート

アクティベーションログインを User クラスに入れる必要はないと思います。{% url user.registration_activate activation_key %}ビューを url テンプレート タグに渡す必要があるため、絶対にできません。ビュー機能 (または CBV) がないとリンクを作成できません。

プロファイルで activation_key を検索してアクティブ化するビューを作成する必要があります。ActivationViewdjango-registration / registration / backends / default / views.pyのメソッドを確認してください。

アプリにカスタム ロジックを実装する場合は、sublclass だけを作成ActivationViewし、デフォルト (django-registration / registration / backends / default / urls.py) の代わりに urls.py でクラスを使用します。 url(r'^activate/(?P<activation_key>\w+)/$', ActivationView.as_view(), name='registration_activate'),

于 2013-09-02T19:08:47.800 に答える