如何渲染django html模板作为纯文本?



在django中是否有任何机制将html呈现为纯文本?例如:

<h1>Title</h1>
<p>Paragraph</p>

:

标题

款特别用于附加HTML电子邮件的文本替代

编辑:我不是问HTML字符串。我的意思是不带标签的纯文本。只考虑新线路之类的事情。类似于lynx浏览器

邮寄:

Django包含django.core.mail.send_mail方法

from django.core import mail
from django.template.loader import render_to_string
from django.utils.html import strip_tags
subject = 'Subject'
# mail_template.html is in your template dir and context key you can pass to 
# your template dynamically
html_message = render_to_string('mail_template.html', {'context': 'values'})
plain_message = strip_tags(html_message)
from_email = 'From <from@example.com>'
to = 'to@example.com'
mail.send_mail(subject, plain_message, from_email, [to], html_message=html_message)

这将发送一封在两个支持html的浏览器中都可见的电子邮件,并将在不支持html的电子邮件查看器中显示纯文本。

将普通html作为字符串发送:

您可以返回一个HttpResponse并传递包含有效HTML的字符串

from django.http import HttpResponse
def Index(request):
text = """
<h1>Title</h1>
<p>Paragraph</p>
"""
# above variable will be rendered as a valid html
return HttpResponse(text) 

但是最好的做法是总是返回一个模板并将模板保存在其他目录中,如果你只想呈现一个标签并不重要。您可以使用render方法:

from django.shortcuts import render
def index(request):
return render(request, 'index.html')

注意:确保你在settings.pyTEMPLATES变量中指定了你的模板文件夹,这样django就会知道它应该在哪里呈现模板

您可以使用render_to_string将模板转换为字符串。

from django.template.loader import render_to_string
render_to_string('path_to_template',context={'key','value'})

相关内容

  • 没有找到相关文章

最新更新