[英]How to assign multiline string with special characters to HTML textarea with Javascript
在Flask中,我渲染homepage.html,并将与homepage.html上相同的文本发回到HTML textarea textid
@app.route('/',methods = ['GET', 'POST'])
def result():
if request.method == 'POST':
userdata = request.form['Name']
return render_template("homepage.html", userdata= userdata)
在HTML homepage.html中
<script>
var fillinuserinput = function(){
document.getElementById("textid").value = "{{ userdata }}"
}
</script>
当userdata(html textarea值)是单行字符串且没有特殊字符时,它将起作用。 但是,当它的多行带有特殊字符时,它将失败。
以下是userdata(html textarea值)中的before文本(文本是python代码):
#!/ usr / bin / env python
导入字符串
平移= 3
choice = raw_input(“您想编码还是解码?”)
以下是从Flask返回的用户数据:
document.getElementById(“ textid”)。value =“#!/ usr / bin / env python
导入字符串
平移= 3
选择= raw_input(&#3 4;您要编码还是解码?&#3 4;)
返回的数据我得到了无效或意外的令牌,再加上&#34(我确实将utf-8放在客户端和服务器端,不确定这是否重要)
任何帮助将不胜感激。
我对Flask不太熟悉,但是大多数模板语言会将插值输入视为不安全,并且会转义您输入的所有文本。 如果您想避免转义输入,请查看http://flask.pocoo.org/docs/0.12/templating/
根据该页面,有一些选项:
要在模板中禁用自动转义系统,可以使用{%autoescape%}块:
{% autoescape false %}
<p>autoescaping is disabled here
<p>{{ will_not_be_escaped }}
{% endautoescape %}
另一个相关的问题是,我假设当您说您有多行输入时,它正在使用换行符。 这些在HTML中没有意义,因此您不会在输出中看到换行符。 您可能需要用<br>标记替换换行符才能真正获得它们。 结合将字符串标记为“安全”,可以为您提供所需的结果。 请记住,您将需要提前清理输入,然后用<br>标记替换换行符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.