【问题标题】:Code for sending activation data back to django server from email从电子邮件将激活数据发送回 django 服务器的代码
【发布时间】:2013-09-02 18:54:39
【问题描述】:

我正在尝试了解 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 中输入什么代码来创建一个链接,该链接使用activation_key 调用activate method? 或者有更好的方法吗?

任何帮助都会很棒。谢谢

【问题讨论】:

    标签: python django django-registration django-email


    【解决方案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 %} 因为您必须将 View 传递给 url 模板标签!没有视图函数(或 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'),

    【讨论】:

    • 我已经检查了 django-registration 但没有模板,尝试寻找其他地方但没有运气。如果registration_activate 是一个基于函数的视图,你的答案会起作用,但这里它实际上是一个用户对象的方法,我想做这样的事情,{% url user.registration_activate activation_key %}。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 2011-02-23
    • 2013-10-17
    • 2013-04-17
    • 2014-12-11
    • 2015-09-10
    • 2013-12-26
    • 2011-01-02
    相关资源
    最近更新 更多