簡體   English   中英

在電子郵件模板中添加Django變量

[英]Add Django Variables in Email Template

我有一個相對簡單的目標:當用戶注冊並激活包含用戶信息(例如用戶名,電子郵件等)的帳戶時,向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 ,我嘗試了相應的導入語句。

我還嘗試了使用上下文設置的渲染模板以及在網絡上發現的其他變體,例如:

查找django-registration用戶名變量

我不斷收到這樣的錯誤消息:

global name 'user' is not defined

我認為我已經正確設置了模板上下文處理,因為我可以在另一個模板中使用類似{{ user.username }}東西,並且可以正常工作。

我也嘗試過更正我的import語句,以包括必要的對象,但是沒有運氣。 我已經盡力嘗試在網上找到有關該主題的大部分內容,所以我很茫然...

我想念什么?

我沒有意識到這是如此容易。 根據這篇文章:

django項目中的信號處理程序應該放在哪里?

我實際上嘗試在信號連接器方法中將用戶和請求添加為參數,並且這樣做有效:

. . .

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

. . .

然后,我在電子郵件模板中使用了它:

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

我可能對此想法有所考慮,但我感到驚訝的是沒有人加強並能夠幫助解決這一問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM