use*_*ser 2 javascript django json django-templates django-views
我想将字典从 django 视图传递到 javascript 文件。该词典是根据站点用户填充的数据库构建的。这两种方法在安全性方面有什么区别?
var mydata = JSON.parse("{{mydata|escapejs}}");
var mydata = {{ mydata|safe }};
此外,django的文档对escapejs
:这不会使字符串在 HTML 中使用安全。您能否向我展示一个示例,说明它是如何不安全的以及我如何使其安全。
对于 2019 年遇到此问题的任何人,Django 现在为|json_script
模板过滤器提供了第三个选项。此过滤器负责正确序列化和转义 Python 对象以在 HTML 中使用。
从文档中,使用带有不安全字符的示例数据my_data = {'hello': 'world</script>&'}
:
{{ my_data|json_script:"my-data" }}
Run Code Online (Sandbox Code Playgroud)
呈现为
<script id="my-data" type="application/json">
{"hello": "world\\u003C/script\\u003E\\u0026amp;"}
</script>
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过 Javascript 访问这些数据
var value = JSON.parse(document.getElementById('my-data').textContent);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4783 次 |
最近记录: |