用于将激活数据从电子邮件发送回django服务器的代码

时间:2013-09-02 18:54:39

标签: python django django-registration django-email

我试图理解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

activation_email.txt内应该使用哪些代码来创建使用activate method调用activation_key的链接? 或者有更好的方法吗?

任何帮助都会很棒。感谢

1 个答案:

答案 0 :(得分:1)

如果您使用网站django app:

,请在电子邮件中尝试这样的操作
http://{{ site.domain }}{% url registration_activate activation_key %}

或者使用您网站的DNS更改site.domain。你的

如果我没记错,django-registration已在其模板中包含示例activation_email.txt,请将其检出。

更新

我认为你不应该在用户类中加入激活登录。您绝对不能{% url user.registration_activate activation_key %},因为您必须将视图传递给网址模板标记!没有视图功能(或CBV),您无法创建链接。

您需要做的是创建一个视图,在“个人档案”中搜索activation_key并激活它。检查django-registration / registration / backends / default / views.py的ActivationView方法。

如果您想为您的应用实现自定义逻辑,只需要子类ActivationView,并使用urls.py中的类而不是默认值(django-registration / registration / backends / default / urls.py): url(r'^activate/(?P<activation_key>\w+)/$', ActivationView.as_view(), name='registration_activate'),