Python 将\n和其他原始字符传递到html输入字段

Python 将\n和其他原始字符传递到html输入字段,python,flask,escaping,Python,Flask,Escaping,我正在编写一个flask应用程序,它允许用户为批处理作业指定参数—我希望用户提供的参数之一是分隔符—用于csv文件或作为文本文件的行结束符 我有一个json文档,其中包含给定作业的默认值,我使用这些值预填充一系列表单输入元素,用户可以选择编辑这些元素 我遇到的问题是,当默认参数为tab或newline时,它们在我的json中分别表示为\t或\n——但是当将这些值注入我的html页面构建代码时,它们分别被解释为实际的tab或newline data_content_template = "

我正在编写一个flask应用程序,它允许用户为批处理作业指定参数—我希望用户提供的参数之一是分隔符—用于csv文件或作为文本文件的行结束符

我有一个json文档,其中包含给定作业的默认值,我使用这些值预填充一系列表单输入元素,用户可以选择编辑这些元素

我遇到的问题是,当默认参数为tab或newline时,它们在我的json中分别表示为
\t
\n
——但是当将这些值注入我的html页面构建代码时,它们分别被解释为实际的tab或newline

data_content_template = """<label for="{pipe}_{e}_{dsk}">{dsk}:</label><br>
           <input type="text" id="{pipe}_{e}_{dsk}" name="{pipe}_{e}_{dsk}" value="{dse}"><br>"""

form_contents=[]
for e,dsi in enumerate(content.get("data_source",[])):
    for dk,de in dsi.items():
        form_contents.append(data_content_template.format(pipe=escape(content.get("pipe")),
                                                          e=e,
                                                          dsk=escape(dk),
                                                          dse=escape(de)))
data\u content\u template=“”{dsk}:

“”“ 表格内容=[] 对于e,枚举中的dsi(content.get(“data_source”,[]): 对于dk,dsi.items()中的de: form\u contents.append(data\u content\u template.format(pipe=escape(content.get(“pipe”)), e=e, dsk=逃生(dk), dse=逃逸(de)))
在这里,我使用flask.escape尝试将这些值强制输入到它们的文本框中,而不将它们转换为空白。但当我查看html源代码时,结果是这样的:

<input type="text" id="ref_data_0_newline" name="ref_data_0_newline" value="
"><br>


如何以原始的、未更改的形式通过
\n
,使其显示一个反斜杠,后跟一个n?

是否可以用双反斜杠替换“\n”到“\\n”的字符串?如果不起作用,您可以尝试将“\n”编码为“\;不

您也可以尝试将换行符直接编码为“ ;”

您可以将下面的JS示例重写为python,将不在白名单中的任何特殊字符转换为其实体代码。我下面的示例转换为 ;但您可以删除或注释掉该行,具体取决于您是否希望换行符在html中显示为换行符

/**
 * Turn all chars not in w (whitelist) into their html-friendly character codes. Converts line-breaks to br.
 *
 * @param {string} text The text to escape.
 * @return The escaped text.
 * @customfunction
 */
function escapeText_html (text){
  var s ="", w="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,.!?;-$%# ";
  for(i=0; i<text.length; i++){
    c = text.substring(i, i+1);
    if(w.indexOf(c) != -1 ){
      s += c;
    }else{
      s += "&#" + c.charCodeAt(0) + ";";
    }
  }
  s=replaceAll(s, "&#10;", "<br />");
  return s;  
}
/**
*将所有不在w(白名单)中的字符转换为html友好字符代码。将换行符转换为br。
*
*@param{string}text要转义的文本。
*@返回转义文本。
*@customfunction
*/
函数escapeText_html(文本){
var s=“”,w=“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz1234567890,.!?-$%”;

对于(i=0;i您想要的,
safe
filter…
escape
与您需要的正好相反

{{ form_content | safe }}
然后它应该呈现html