我正在使用我django-registration
的一个项目。
我想在用于电子邮件激活的模板中添加一些额外的上下文数据。
查看注册视图源,我不知道该怎么做。
任何的想法 ?
据我记得,您需要编写自己的注册后端对象(听起来更容易)以及您自己的配置文件模型,该模型继承自RegistrationProfile
您的自定义并让后端使用您的自定义RegistrationProfile
(此模型是电子邮件模板的呈现位置和那里没有办法扩展上下文,所以需要覆盖)
一个简单的解决方案是重写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)
我不明白你的问题是什么,但参数只是在你链接的代码中(最后一个):
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 中,通常人们会问更多,但是,当然,它可能来自您调用该方法的任何其他文件。