我正在使用django-registration
作为我的项目。
我想在用于电子邮件激活的模板中添加一些额外的上下文数据。
查看register view source,我无法弄清楚如何做到这一点。
有什么想法吗?
答案 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)