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

如何在Flask中传递值并完整保留所有换行与空格?

解决Flask跳转时文本空格与换行丢失的问题

问题核心

直接拼接URL参数时未做URL编码,导致浏览器自动合并连续空格,同时手动替换换行的操作多余且易出问题。

解决方案

1. 修改前端JS代码,使用URL编码传递参数

去掉手动替换换行的逻辑,用encodeURIComponent()对文本参数进行完整编码,确保所有特殊字符(空格、换行、制表符等)都能被正确传递:

let confirmUri = "{{ url_for('confirm_page') }}";
let str = editor.getValue();
// 用模板字符串拼接URL,同时编码text参数
window.location.href = `${confirmUri}?authorization=supersecretcode&text=${encodeURIComponent(str)}`;

2. Flask后端直接解码获取原始文本

Flask的request.args会自动解码URL编码后的参数,无需手动处理换行符:

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/confirm_page')
def confirm_page():
    # 权限验证
    auth_code = request.args.get('authorization')
    if auth_code != 'supersecretcode':
        return "权限不足", 403
    # 直接获取解码后的原始文本
    input_text = request.args.get('text', '')
    # 传递给模板渲染
    return render_template('confirm.html', text=input_text)

3. 模板中正确显示格式

要在页面上保留原始的空格和换行,必须使用<pre>标签,或者给元素添加white-space: pre-wrap;的CSS样式:

<!-- 方式1:用pre标签强制保留格式 -->
<pre>{{ text }}</pre>

<!-- 方式2:用div配合CSS,支持自动换行同时保留空格 -->
<div style="white-space: pre-wrap; word-wrap: break-word;">{{ text }}</div>

为什么之前的方法会丢失空格?

之前的代码直接拼接未编码的文本到URL中,浏览器会将连续的空格自动合并为一个,同时手动替换换行符为\n的操作会导致换行符被转义,反而需要后端再次处理,增加出错概率。使用encodeURIComponent()会将空格编码为%20,换行编码为%0A(或%0D%0A),Flask会自动解码这些编码,完全保留原始文本的格式。

内容的提问来源于stack exchange,提问作者Dany

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:47:21