[英]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
,我嘗試了相應的導入語句。
我還嘗試了使用上下文設置的渲染模板以及在網絡上發現的其他變體,例如:
我不斷收到這樣的錯誤消息:
global name 'user' is not defined
我認為我已經正確設置了模板上下文處理,因為我可以在另一個模板中使用類似{{ user.username }}
東西,並且可以正常工作。
我也嘗試過更正我的import語句,以包括必要的對象,但是沒有運氣。 我已經盡力嘗試在網上找到有關該主題的大部分內容,所以我很茫然...
我想念什么?
我沒有意識到這是如此容易。 根據這篇文章:
我實際上嘗試在信號連接器方法中將用戶和請求添加為參數,並且這樣做有效:
. . .
@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.