2012-10-21 122 views
3

我想使用django模板進行電子郵件發送。 但我應該有兩個版本的電子郵件 - HTML和純文本。第一個版本是一樣產生如下:如何從django模板中刪除所有的html標籤?

template_values = { 
    'company_id': company.id 
    } 
template_file = os.path.join(os.path.dirname(__file__), 'templates/email.html') 
html = template.render(template_file, template_values) 

現在我應該產生來自同一文件的純文本 - templates/email.html,但它包含html標籤(如<div style="font-size:13px; margin: 14px; position:relative">),這是我應該刪除(鏈接應該留下來,但應該是替換爲純文本,例如,<a href="http://example.com">Example</a>應替換爲類似Example (http://example.com)的東西)。

我讀過,我不應該使用正則表達式。什麼樣的內置GAE庫可以幫助我?或者有什麼辦法可以用django的striptags

+2

一種常見的方式實現這一目標是使用另一個模板爲其他電子郵件格式「文本」。 – jpic

+1

[django-templated-email](https://github.com/bradwhittington/django-templated-email) –

+0

@jpic,謝謝。如果我使用單獨的純文本Django模板,看起來像行尾字符被刪除。我怎樣才能避免它? –

回答

7

一旦你的HTML,你需要做的是這樣的:

from django.utils.html import strip_tags 

template_values = { 
    'company_id': company.id 
} 
template_file = os.path.join(os.path.dirname(__file__), 'templates/email.html') 
html = template.render(template_file, template_values) 

plain_text = strip_tags(html)