我试图了解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的链接?
还是有更好的方法呢?

任何帮助都会很棒。谢谢

最佳答案

如果您使用的是django网站应用,请在电子邮件中尝试类似的方法:

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


否则,用您站点的DNS更改site.domain。你的

如果我没记错的话,django-registration在其模板中已经包含了一个示例activation_email.txt,请签出。

更新资料

我认为您不应该将激活登录名放在User类中。您绝对不能执行{% url user.registration_activate activation_key %},因为必须将View传递给url模板标记!如果没有查看功能(或CBV),则无法创建链接。

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

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

关于python - 用于通过电子邮件将激活数据发送回Django服务器的代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18579279/

10-13 02:48