【发布时间】:2010-11-30 10:34:19
【问题描述】:
我正在使用 Django 的 render_to_response 将数据写入 html 页面,但我也希望 render_ to _response 调用将 python 字典加载到 javascript 关联数组中。最好的方法是什么?
【问题讨论】:
标签: javascript django
我正在使用 Django 的 render_to_response 将数据写入 html 页面,但我也希望 render_ to _response 调用将 python 字典加载到 javascript 关联数组中。最好的方法是什么?
【问题讨论】:
标签: javascript django
Vinay Sajip 很接近,但是您添加了安全过滤器以避免 django 自动转义 json 数据,所以这会起作用(还有其他方法可以阻止自动转义,但这是最简单的方法):
var my_associative_array = {{ json_data|safe }}
【讨论】:
将其转换为 JSON 并在您的 template.html 中包含 <script> 标记,类似于
var my_associative_array = {{ json_data }}
在将 Python 字典 JSON 编码为字符串并使用键 json_data 将其放入上下文之后。
【讨论】:
这到底是什么意思?如果您的意思是您认为模板中的数据是 JavaScript 术语,那么它不是:您可以直接在模板中使用 python 对象。如果您的意思是,我如何将 Python 字典或列表中的 JSON 文字嵌入到我的模板中:使用 Django 中包含的 simplejson 对其进行编码。
但是,您通常不想这样做有几个原因。如果您在模板中包含此动态数据,则无法轻松缓存它。这不应该是另一个正在生成您包含的 JS 文件的视图吗?或者可能是一个 AJAX 调用来在页面上线后获取数据?选择最适合您的情况。
【讨论】: