我在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格式?
答案 0 :(得分:2)
重点是textarea 不包含任何&#34; HTML格式&#34;。如你所说,它包含换行符;但HTML会忽略这些。您需要将它们转换为HTML中断标记。
您可以使用linebreaks
模板过滤器;在模板之外,它可以django.utils.html.linebreaks
访问。
答案 1 :(得分:0)
如果您使用Django's Form API实例化表单/文本区域,则可以应用模板标记过滤器,例如 {{textarea | linebreaks}} 以获取您需要的HTML格式。