【问题标题】:Add Django Variables in Email Template在电子邮件模板中添加 Django 变量
【发布时间】:2014-01-16 06:41:06
【问题描述】:

我有一个相对简单的目标:当用户注册并激活包含用户信息(如用户名、电子邮件等)的帐户时,向 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 中,我尝试了变体,并带有相应的导入语句。

我也尝试过渲染带有上下文设置的模板,以及我在网上找到的其他变体,例如:

finding the django-registration username variable

我不断收到类似的错误消息:

global name 'user' is not defined

我认为我已经正确设置了模板上下文处理,因为我可以在另一个模板中使用 {{ user.username }} 之类的东西并且它可以工作。

我还尝试更正我的导入语句以包含必要的对象,但没有成功。我已经尝试了大部分我可以在网上找到的关于这个主题的内容,所以我很茫然......

我错过了什么?

【问题讨论】:

    标签: django-registration django-signals user-object


    【解决方案1】:

    我没有意识到这很容易。基于这篇文章:

    Where should signal handlers live in a django project?

    我尝试在信号连接器方法中实际添加用户和请求作为参数,这很有效:

    . . .
    
    @receiver(user_registered, dispatch_uid="common.signal_connectors.user_registered_handler")
    def user_registered_handler(sender, user, request, **kwargs):
    
    . . .
    

    然后,我在电子邮件模板中使用了这个:

    {{ user }} 已在 example.com 上注册

    我可能想多了,但我很惊讶没有人站出来帮助解决这个问题......

    【讨论】:

      猜你喜欢
      • 2015-05-29
      • 1970-01-01
      • 2011-01-04
      • 2019-07-25
      • 1970-01-01
      • 2012-12-26
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多