通过Django将Python数据传递给JavaScript


Answers

对于任何可能遇到问题的人,请确保您在模板中以安全模式呈现您的json对象。 你可以像这样手动设置

<script type="text/javascript">
    data_from_django = {{ my_data|safe }};
    widget.init(data_from_django);
</script>
Question

我使用Django和Apache来提供网页。 我的JavaScript代码当前包含一个数据对象,其值将根据用户从选项菜单中的选择,显示在各种HTML小部件中。 我想从Python字典中派生这些数据。 我想我知道如何在HTML中嵌入JavaScript代码,但是如何将数据对象嵌入到该脚本中(即时),以便脚本的功能可以使用它?

换一种说法,我想从Python字典创建一个JavaScript对象或数组,然后将该对象插入到JavaScript代码中,然后将该JavaScript代码插入到HTML中。

我想这个结构(例如嵌入在JavaScript代码中的变量中的数据)是次优的,但作为新手我不知道替代方案。 我已经看过Django序列化函数的书写,但是直到我可以将数据放入我的JavaScript代码中,这些功能并没有帮助。

我还没有使用像jQuery这样的JavaScript库。




把Java脚本嵌入到Django模板中总是不好的主意。

相反 ,因为这个规则有一些例外。

一切都取决于您的Java脚本代码网站和功能。

最好是单独的静态文件,如JS,但问题是每个单独的文件需要另一个连接/ GET /请求/响应机制。 有时对于小的一个,两个内码代码os JS把这个放入模板,然后使用django templatetags机制 - 你可以使用在其他模板;)

关于对象 - 相同。 如果你的网站有AJAX的建设/ web2.0喜欢 - 你可以达到很好的效果,把一些计数/数学运算到客户端。 如果对象很小 - 嵌入到模板中,如果很大 - 在另一个连接中响应它们以避免用户挂起页面。




这是不理想的。 你有没有考虑过使用django的内置序列化器来传递数据为JSON?