簡體   English   中英

Django:在不使用Sites框架的情況下在模板/電子郵件中顯示網站名稱

[英]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.

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