如何向激活添加上下文_电子邮件.txt在Djang

2024-04-27 23:58:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想自定义registration/activation_email.txt模板,方法是添加一些其他页面已经可用的变量(例如:my_var)。它们对其他模板可用,因为我将它们添加到context_processors.pyTEMPLATE_CONTEXT_PROCESSORS中的setting.py。 所以我可以在所有模板上使用{{ my_var }}。在

但我无法从activation_email.txt模板内部访问{{ my_var }}。根据一份文件here

此模板有3个上下文:activation_keyexpiration_dayssite。如何在这里添加更多上下文?在


Tags: 方法pytxt模板emailvarmycontext
1条回答
网友
1楼 · 发布于 2024-04-27 23:58:17

该应用程序不会简单地公开钩子来添加更多上下文或更改用于生成电子邮件的上下文类型-您最好的选择是将其RegistrationProfile类(它实际上生成并发送电子邮件消息)和至少基于RegistrationView类的视图进行子类化,然后确保网址.txt而是调用您的视图子类。比如:

from registration.models import RegistrationProfile
from django.template import RequestContext

class VerboseRegistrationProfile(RegistrationProfile):

    def send_activation_email(self, site):
        ctx_dict = {'activation_key': self.activation_key,
                    'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS,
                    'site': site,
        subject = render_to_string('registration/activation_email_subject.txt',
                                   ctx_dict, context=RequestContext())
        # Email subject *must not* contain newlines
        subject = ''.join(subject.splitlines())

        message = render_to_string('registration/activation_email.txt',
                                   ctx_dict, context=RequestContext())

        self.user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL)

那么你的观点是:

^{pr2}$

为了避免将来的维护问题,以防您进一步专门化RegistrationProfile子类,您可能还希望重写ActivationView,但这不是严格必需的。在

相关问题 更多 >