gpt4 book ai didi

python - 如何将上下文添加到 Django 中的activation_email.txt

转载 作者:行者123 更新时间:2023-12-01 05:44:03 25 4
gpt4 key购买 nike

我想通过添加一些所有其他页面都可用的变量(例如:my_var)来自定义 registration/activation_email.txt 模板。它们可用于其他模板,因为我将它们添加到 context_processors.pysetting.pyTEMPLATE_CONTEXT_PROCESSORS 中。这样我就可以在所有模板上使用 {{ my_var }}

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

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

最佳答案

该应用程序不会轻易公开 Hook 来添加更多上下文或更改用于构建电子邮件的上下文类型 - 最好的选择是子类化其 RegistrationProfile 类(实际上构建并发送电子邮件)和至少 RegistrationView 类基于 View ,然后确保您的 urls.txt 正在调用您的 View 子类。像这样的东西:

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)

那么你的看法:

from myreg.models import VerboseRegistrationProfile
from registration.backends.default import RegistrationView

class VerboseRegistrationView(RegistrationView):

def register(self, request, **cleaned_data):
username, email, password = cleaned_data['username'], cleaned_data['email'], cleaned_data['password1']
if Site._meta.installed:
site = Site.objects.get_current()
else:
site = RequestSite(request)
new_user = VerboseRegistrationProfile.objects.create_inactive_user(username, email,
password, site)
signals.user_registered.send(sender=self.__class__,
user=new_user,
request=request)
return new_user

为了避免将来的维护问题,如果您进一步专门化您的 RegistrationProfile 子类,您可能还想覆盖 ActivationView,但这并不是绝对必要的。

关于python - 如何将上下文添加到 Django 中的activation_email.txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16720154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com