Flask中render_template_string无法生成换行符,求Python替代PHP_EOL方案
Flask render_template_string 换行问题解决
两种换行需求的处理方式
页面显示换行:HTML本身会忽略普通的
\n换行,要让内容在页面上换行,得用HTML的<br>标签,或者把内容放在<pre>标签里(保留原格式)。
比如处理文本中的换行:return render_template_string('<p>{{ text|replace("\\n", "<br>")|safe }}</p>')这里用Jinja2的
replace过滤器把文本里的\n换成<br>,safe过滤器告诉模板不要转义HTML标签。HTML源码里的换行:如果只是想让生成的HTML源码有换行(方便调试查看),Python里的
os.linesep就是和PHP_EOL等价的东西,它会根据当前系统自动返回对应的换行符(Windows是\r\n,Linux/macOS是\n)。
先导入os模块,然后修改代码:import os return render_template_string('<p>{{ text }}</p>' + os.linesep) + \ render_template_string('</details>' + os.linesep)更简洁的写法是把两个模板合并成一个,避免多次调用
render_template_string:import os return render_template_string(f'<p>{{ text }}</p>{os.linesep}</details>')
你的代码问题说明
你原来的代码里手动加的换行没生效,本质是多次调用render_template_string拼接时,换行逻辑没被正确保留。如果不需要跨系统兼容,直接用\n也能实现源码换行:
return render_template_string('<p>{{ text }}</p>\n') + render_template_string('</details>\n')
内容的提问来源于stack exchange,提问作者upkagefa
相关产品推荐
相关产品推荐

