You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:18:19