[英]Django: Display website name in Template/Emails without using Sites framework
我想在Django模板中呈現我的網站名稱。 Django在Sites上的文檔狀態如下:
如果單個Django安裝為多個站點提供支持,並且您需要以某種方式區分這些站點,請使用它。
我的Django應用沒有。 我知道我仍然可以使用它,但這似乎有點過頭了。 我只想在ANY模板中提取帶有我的網站名稱(!=域)的變量。 我也不想在視圖中傳遞它,因為這似乎還不夠干。
編寫自定義處理器似乎很簡單,但是由於某些原因,這些變量在django-registration發送的.txt電子郵件中不可用(而其他變量肯定是,所以我想並非不可能)。
TIA
編輯:被要求包含無效代碼:
processors.py:
def get_website_name(request):
website_name = 'SomeWebsite'
return {'mysite_name': website_name}
已成功包含在settings.py中的context_processors
中。 它可以在“常規”模板中很好地工作,但在電子郵件中則不能。
這是我在change_email_view
內發送電子郵件的change_email_view
:
msg_plain = render_to_string('email_change_email.txt', context)
msg_html = render_to_string('email_change_email.html', context)
send_mail(
'Email change request',
msg_plain,
'my@email',
[profile.pending_email],
html_message=msg_html,
)
另一個問題是django-regitration進一步將其中的某些視圖抽象了:因此,當用戶注冊,想重置密碼等時,我什至無法訪問這些視圖。
基於render_to_string方法中的Django自定義context_processors,您應該將請求傳遞給render_to_string
。
msg_plain = render_to_string('email_change_email.txt', context, request=request)
msg_html = render_to_string('email_change_email.html', context, request=request)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.