0

我正在使用我django-registration的一个项目。

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

查看注册视图源,我不知道该怎么做。

任何的想法 ?

4

3 回答 3

2

据我记得,您需要编写自己的注册后端对象(听起来更容易)以及您自己的配置文件模型,该模型继承自RegistrationProfile您的自定义并让后端使用您的自定义RegistrationProfile(此模型是电子邮件模板的呈现位置和那里没有办法扩展上下文,所以需要覆盖)

于 2012-11-22T12:35:22.787 回答
0

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

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)
于 2013-08-05T21:43:50.977 回答
-1

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

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 中,通常人们会问更多,但是,当然,它可能来自您调用该方法的任何其他文件。

于 2012-11-22T12:36:41.650 回答