Python 将变量从Django模板传递到视图时保留HTML格式

Python 将变量从Django模板传递到视图时保留HTML格式,python,html,django,Python,Html,Django,我在Django应用程序中创建了一个联系人表单 在我的模板中有一个textarea字段: <textarea class="form-control" rows="8" id="email_body" name="email_body" placeholder="Email body"></textarea> 我不知道是否需要,但发送电子邮件功能的代码是: def send_emails(email_subject, email_body, email_list):

我在Django应用程序中创建了一个联系人表单

在我的模板中有一个textarea字段:

<textarea class="form-control" rows="8" id="email_body" name="email_body" placeholder="Email body"></textarea>
我不知道是否需要,但
发送电子邮件
功能的代码是:

def send_emails(email_subject, email_body, email_list):
    subject = email_subject
    message = email_body

    email = EmailMessage(subject, message, os.environ['EMAIL_HOST_USER'], email_list)
    email.content_subtype = "html"
    email.send()
问题是电子邮件正文没有文本格式。所有换行符(来自文本区域)都将丢失,消息将打印在一行中


在将文本区域消息传递到视图和
send_emails
功能时,是否有办法保持文本区域消息的原始HTML格式?

关键是文本区域不包含任何“HTML格式”。正如你所说,它包含新行;但是HTML忽略了这些。您需要将它们转换为HTML断开标记


您可以为此使用
换行符
模板过滤器;在模板之外,可以通过
django.utils.html.linebreaks

访问它。关键是文本区域不包含任何“html格式”。正如你所说,它包含新行;但是HTML忽略了这些。您需要将它们转换为HTML断开标记


您可以为此使用
换行符
模板过滤器;在模板之外,它可以作为
django.utils.html.linebreaks

进行访问。如果使用实例化表单/文本区域,则可以应用模板标记过滤器,例如{{textarea | linebreaks}来获取所需的html格式。

如果使用,您可以应用模板标记过滤器,如{{textarea | linebreaks}来获取所需的HTML格式。

您需要使用安全模板标记。从这里进一步阅读。您需要使用安全模板标记。从这里进一步阅读。丹尼尔,你学识渊博,但我认为你在这一点上错了。数据库中文本区域保存的值包含正确的HTML格式标记,如粗体、斜体和下划线以及字体详细信息。需要使用安全模板标记才能将该变量显示为在文本区域中输入的值。我错了吗?如果OP使用了某种WYSIWYG小部件,情况就是这样;然而,在这个问题上没有任何迹象。丹尼尔,你知识渊博,但我认为你在这一点上错了。数据库中文本区域保存的值包含正确的HTML格式标记,如粗体、斜体和下划线以及字体详细信息。需要使用安全模板标记才能将该变量显示为在文本区域中输入的值。我错了吗?如果OP使用了某种WYSIWYG小部件,情况就是这样;然而,问题中没有这方面的迹象。
def send_emails(email_subject, email_body, email_list):
    subject = email_subject
    message = email_body

    email = EmailMessage(subject, message, os.environ['EMAIL_HOST_USER'], email_list)
    email.content_subtype = "html"
    email.send()