我有一个相对简单的目标:当用户注册并激活包含用户信息(如用户名、电子邮件等)的帐户时,向 Django 管理员发送电子邮件。我django-registration
用于处理注册过程。然后我使用信号发送电子邮件。这个过程工作得很好,但是一旦我尝试将用户、用户名或用户的电子邮件注入电子邮件模板,我就会遇到麻烦。
这是我的signal_connectors.py
:
from django.core.mail import mail_admins
from django.dispatch import receiver
from registration.signals import user_registered
from django.template.loader import render_to_string
@receiver(user_registered, dispatch_uid="common.signal_connectors.user_registered_handler")
def user_registered_handler(sender, **kwargs):
print('user registration completed...')
subject = 'registration notify'
template = 'common/email.html'
message = render_to_string(template, {'user': user})
from_email = 'from@example.com'
# send email to admins, if user has been registered
mail_admins(subject, message, fail_silently=False, connection=None, html_message=None)
print('sending email to administrators...')
模板是这样的:
{{ user }} has registered at example.com
我尝试过类似{{user}}
, {{user.username}}
,{{request.user.username}}
等的变体。此外,在message
上面的变量中signals_connectors.py
,我尝试了变体,并带有相应的导入语句。
我还尝试过渲染带有上下文集的模板,以及我在网上找到的其他变体,例如:
我不断收到这样的错误:
global name 'user' is not defined
我想我已经正确设置了模板上下文处理,因为我可以{{ user.username }}
在另一个模板中使用类似的东西并且它可以工作。
我还尝试更正我的导入语句以包含必要的对象,但没有运气。我已经尝试了大部分我可以在网上找到的关于这个主题的内容,所以我很茫然......
我错过了什么?