我正在尝试将一个字符串渲染成一个javascript(通常对我来说很好),这是我的代码
HTML:
THE USER NAME IS : {{name}} has added app {{has_added_app}}
Run Code Online (Sandbox Code Playgroud)
JAVA SCRIPT:
<script>
<!--
var userName = {{name}}
Run Code Online (Sandbox Code Playgroud)
当我在javascript中尝试相同的渲染并且它工作时,html版本工作javascript失败.
var userName = {{name}}
Run Code Online (Sandbox Code Playgroud)
当您将HTML源视为以下内容时出现:
var userName = Bob
Run Code Online (Sandbox Code Playgroud)
这是一个明显的错误:缺少引号.但是,只需在其周围加上引号:
var userName = '{{name}}';
Run Code Online (Sandbox Code Playgroud)
对于一般情况来说还不够好.如果字符串包含引号字符,反斜杠或换行符怎么办?最好的情况,你的应用程序崩溃了.最糟糕的情况是,跨站点脚本安全漏洞.名称中的一个&或多个<字符也不能正常通过,因为Django autoescape可能会假设它处于非CDATA HTML上下文中,并且不恰当地使用它们.
请改用escapejs过滤器:
var userName = '{{name|escapejs}}';
Run Code Online (Sandbox Code Playgroud)
或者,使用JSON编码器将任何基本数据类型转换为JavaScript文字格式,而不仅仅是字符串.在标准库中有来自2.6 的json,但请注意,这不会转义<字符串中的字符,因此,为了将代码注入脚本元素,您必须手动转义以防止</script>序列过早地结束CDATA元素.
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |