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

Python Flask保存HTML文本框内容时额外添加换行问题排查求助

问题:Flask保存textarea内容到文件时,内容被自动添加HTML

标签及额外换行

问题详情

  • 初始文件内容:
line1
Line2
Line 3
Line 4
  • 通过UI的textarea添加一行后,textarea内显示的内容正常:
line1
Line2
Line 3 
line 3.1
Line 4
  • 保存到test.txt后的实际内容却被加上了HTML段落标签:
<p>line1</p>
<p>Line2</p>
<p>Line 3</p>
<p>line 3.1</p>
<p>Line 4</p>

原因分析

核心问题出在前端模板resolve_conflict.html的渲染逻辑:

  • 你可能误用了会将纯文本转换为HTML的工具(比如富文本编辑器)替代了原生textarea,导致输入的换行被自动转换成<p>标签。
  • 或者模板中对file_contents使用了特定过滤器(如|markdown),这类过滤器会把文本换行解析为HTML段落。
  • 后端代码里的rstrip()仅移除字符串末尾空白,不会影响内容中间的标签或换行,不是问题根源。

解决方法

  1. 修复前端模板渲染
    确保模板里的textarea直接渲染原始纯文本,不要做HTML转换:

    <textarea name="file_contents">{{ file_contents }}</textarea>
    
    • 如果之前用了富文本编辑器,要么替换回原生textarea,要么配置编辑器以纯文本模式输出内容。
    • 移除对file_contents的HTML类过滤器(如|markdown、|html)。
  2. 后端代码优化(可选)

    • 若前端仍有残留HTML标签,可在后端添加纯文本提取逻辑(需先安装beautifulsoup4):
      from bs4 import BeautifulSoup
      
      # 获取表单内容后处理
      file_contents = request.form['file_contents']
      soup = BeautifulSoup(file_contents, "html.parser")
      file_contents = soup.get_text()
      
    • 移除多余的f.close():with open上下文管理器会自动关闭文件,手动调用属于冗余操作,修改后代码:
      with open('C:\\Temp\\test.txt', 'w') as f:
          f.write(file_contents.rstrip())
      

内容的提问来源于stack exchange,提问作者Amit Kumar Bhakat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:13:16