如何在HTML页面中正确格式化显示Jinja2模板(.j2文件)?
解决Jinja2模板输出在HTML中不换行的问题
这种情况很常见,核心原因是浏览器渲染HTML时会把文本里的普通换行符当成空格处理,不会解析成换行。这里有几个简单直接的解决办法:
方法1:在Jinja2模板中直接用HTML换行标签
修改你的result.j2模板,把换行换成<br>标签,让浏览器明确识别换行:
Your first name is {{first_name}}<br> Your last name is {{last_name}}
方法2:用<pre>标签包裹输出内容
如果想保留模板里的原始换行格式,不用修改模板,直接在output.html里用<pre>标签包裹输出内容即可——这个标签会严格保留文本的空格和换行:
<pre>{{ form_data }}</pre>
方法3:后端替换换行符为<br>
也可以在Python代码里处理渲染后的结果,把换行符批量替换成HTML换行标签:
修改views.py里的form_gen函数:
if form.is_valid(): file_loader = FileSystemLoader('emps/templates/emps') env = Environment(loader=file_loader) template = env.get_template('result.j2') output = template.render(form.cleaned_data).replace('\n', '<br>') return render(request, "emps/output.html", { "form_data": output })
补充说明
HTML的渲染规则是:连续的空白字符(包括换行、空格、制表符)都会被合并成单个空格显示。所以你在Jinja2模板里写的换行,到浏览器里就变成了空格,导致两行内容连在一起。上面的三种方法都是通过明确告知浏览器如何处理换行,来达到预期的显示效果。
内容的提问来源于stack exchange,提问作者fisherman
相关产品推荐
相关产品推荐

