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

时间:2016-11-14 10:52:14

标签: python html django

我在Django应用中创建了一个联系表单。

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

<textarea class="form-control" rows="8" id="email_body" name="email_body" placeholder="Email body"></textarea>

在我的views.py中,此textarea的内容将传递给发送电子邮件的函数:

def index(request):
    # some code here
    email_body = request.POST.get('email_body')
    send_emails(email_subject, email_body, email_list) # the other variables are declared above
    # more code here

我不知道是否需要它,但send_emails函数的代码是:

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()

问题是电子邮件正文没有文字格式。所有换行符(来自textarea)都将丢失,并且消息将打印在一行中。

当传递给视图和send_emails函数时,有没有办法保留textarea消息的原始HTML格式?

2 个答案:

答案 0 :(得分:2)

重点是textarea 不包含任何&#34; HTML格式&#34;。如你所说,它包含换行符;但HTML会忽略这些。您需要将它们转换为HTML中断标记。

您可以使用linebreaks模板过滤器;在模板之外,它可以django.utils.html.linebreaks访问。

答案 1 :(得分:0)

如果您使用Django's Form API实例化表单/文本区域,则可以应用模板标记过滤器,例如 {{textarea | linebreaks}} 以获取您需要的HTML格式。