0

我有来自 Django-registration 应用程序的代码。

  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)

里面activation_email.txt是这样的:这是身体

到控制台的输出电子邮件是这样的:

Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: this is the subject
From: gccFishing.com
To: ipad@ap.com
Date: Sun, 01 Sep 2013 20:39:04 -0000
Message-ID: <20130901203904.3048.2540@hammad-P5QL-E>

this is the body
  1. 存储在哪里ctx_dict
  2. 如何访问ctx_dict以检查激活密钥是否已发送?
  3. ctx_dict 客户端单击链接 后如何返回服务器?
4

1 回答 1

2

1.ctx_dict不会存储在任何地方 - 它被传递给模板渲染器以制作activation_keyexpiration_days可供您的模板使用。例如,更好的电子邮件模板是 -

Thanks for registering, you have {{expiration_days}} to activate your account at {% url 'registration_activate' activation_key %}

ctx_dict2.除了你的模板,你不能访问任何地方(即使你是间接访问它)。但是,您可以查询数据库。为已注册的任何人创建一个 RegistrationProfile,并在此时发送电子邮件。您可以通过查询User.is_active字段或测试是否RegistrationProfile.activation == Registration.ACTIVATED为真来测试它们是否被激活。

3.再一次,你没有。您查询数据库以获取信息。

作为一个偶然的观察,您似乎错误地使用了 django-registration 来需要此信息。该应用程序有许多视图和一个 urlconf 已经设置来管理整个注册过程,您只需要提供模板,按照标准注册设置的文档

于 2013-09-02T00:15:21.950 回答