如何解决将\ n和其他原始字符传递到html输入字段
我正在编写一个Flask应用程序,该应用程序允许用户为批处理作业指定参数-我希望用户提供的参数之一是定界符-用于csv文件或用作文本的行尾终止符文件。
我有一个json文档,其中包含给定作业的默认值,并使用这些值预先填充用户可以选择编辑的一系列表单输入元素。
我的问题是,当默认参数是tab或换行符时,它们在我的json中分别表示为\t
或\n
-但是,当将这些值注入到我的html页面构建代码中时,它们分别被解释为实际选项卡或换行符。
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)))
在这里,我正在使用flask.escape尝试将这些值强制进入其文本框,而无需将其转换为空格。但是,当我查看html源代码时,它是这样显示的:
<input type="text" id="ref_data_0_newline" name="ref_data_0_newline" value="
"><br>
如何通过\n
以其原始形式进行修改,使其显示反斜杠后跟n?
解决方法
您是否可以使用双反斜杠将字符串'\ n'替换为'\\ n'?如果那不起作用,则可以尝试将'\ n'编码为'&#92; n'。
您还可以尝试将换行符直接编码为“&#10;”。
您可以将类似下面的JS示例的内容重写为python,以将不在白名单中的任何特殊字符转换为其实体代码。我下面的示例转换&#10;放入
,但是您可以根据是否希望换行符在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," ","<br />");
return s;
}
,
您想要烧瓶safe
过滤器... escape
与您所需要的相反
{{ form_content | safe }}
然后应呈现html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。