Django - django-registration激活电子邮件中的额外上下文

时间:2012-11-22 11:45:38

标签: django django-registration django-context

我正在使用django-registration作为我的项目。

我想在用于电子邮件激活的模板中添加一些额外的上下文数据。

查看register view source,我无法弄清楚如何做到这一点。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

根据我的记忆,你需要写下你的own registration backend object(比较简单的是声音)以及你的own profile model that inherits from RegistrationProfile,并让后端使用你的自定义RegistrationProfile代替(此模型是在哪里呈现电子邮件模板,并且无法扩展上下文,因此需要覆盖它们

答案 1 :(得分:0)

我不知道你的问题是什么,但参数只在你链接的代码中(最后一个):

def register(request, backend, success_url=None, form_class=None,
         disallowed_url='registration_disallowed',
         template_name='registration/registration_form.html',
         extra_context=None)

这意味着您可以从调用方法的任何地方执行此操作。比方说你的urls.py:

from registration.views import register

(...)

url(r'/registration/^$', register(extra_context={'value-1':'foo', 'value-2':'boo'})), name='registration_access')

这是在urls.py中,通常人们会问更多,但是,当然,它可能来自您调用该方法的任何其他文件。

答案 2 :(得分:0)

一个简单的解决方案是重写send_activation_email 而不是

registration_profile.send_activation_email(site)

我在我的用户模型中写了这个

def send_activation_email(self, registration_profile):
    ctx_dict = {
        'activation_key': registration_profile.activation_key,
        'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS,
        'OTHER_CONTEXT': 'your own context'
    }
    subject = render_to_string('registration/activation_email_subject.txt',
                               ctx_dict)
    subject = ''.join(subject.splitlines())
    message = render_to_string('registration/activation_email.txt',
                               ctx_dict)
    self.email_user(subject, message, settings.DEFAULT_FROM_EMAIL)

我称之为

user.send_activation_email(registration_profile)
相关问题