我在Django中有一个TextField
的模型。我想通过
TextField
的信息传递到网页上
return render(request, 'index.html', {
'textFieldValue': textFieldValue,
'context': RequestContext(request),
})
我遇到的问题是,TextField
可以包含新行,当它通过以下方式传递到我的网页时:
var textFieldValue = "{{ textFieldValue }}";
变成:
var textFieldValue = "Testing string is this.
New line abcde
Second new lineabcde";
由于TextField
中有多行并因此破坏了JavaScript var模板,因此会返回错误。有没有办法解决这个问题?我是否需要将字符串拆分为每行的数组,然后将其传递到我的网页中,并具有解析它的功能?
我也尝试过:
var textFieldValue = "{{ textFieldValue|safe }}";
但它是一回事。
我想这样做,因为我想将其粘贴到我的页面上的textarea
,这看起来像TextField
应该在Django管理员中显示的内容。
我想将来会出现"
或'
引文和@#
等符号的问题。
这对我来说最好的方法是什么?
答案 0 :(得分:1)
您可以使用Django内置的escapejs
过滤器(文档here):
{{ value|escapejs }}
例如,如果值为
"testing\r\njavascript \'string" <b>escaping</b>"
,则输出为"testing\\u000D\\u000Ajavascript \\u0027string\\u0022 \\u003Cb\\u003Eescaping\\u003C/b\\u003E"
。
注意:这不会使字符串在HTML中使用安全,但在使用模板生成JavaScript / JSON时确实可以防止语法错误。