在javascript中迭代Django模板变量,通过更改索引进行访问

在javascript中迭代Django模板变量,通过更改索引进行访问,javascript,python,django,Javascript,Python,Django,如何使用不断变化的索引在javascript中访问或迭代django列表 例如: <script> for (var i=0; i < "{{ django_list|length }}".toInt(); i++) { var e = "{{ django_list" + i.toString() + " }}"; // this gives an error ... // it does not parse a chunk

如何使用不断变化的索引在javascript中访问或迭代django列表

例如:

<script>
    for (var i=0; i < "{{ django_list|length }}".toInt(); i++) {
         var e = "{{ django_list" + i.toString() + " }}"; // this gives an error
         ...    //  it does not parse a chunked ^ template variable properly
         ...
    }
</script>

对于(var i=0;i<“{django_list | length}}”.toInt();i++”){
var e=“{django_list”+i.toString()+“}”;//这会给出一个错误
…//它无法正确分析分块的^template变量
...
}
一些背景。这是一个由django呈现的纯.js文件。这一部分是有效的,它只是不解释子串出的django模板var语法

我更喜欢避免编码为JSON或任何类似内容的解决方案。模板形式是首选的,因为我需要变量的方法

谢谢。

一如既往

一如既往


你不能为每个循环使用一个循环吗

{%  for item in django_list  %}
//Whatever you wish to do with item goes here
{% endfor %}
有关更多信息,请参阅链接

您不能为每个循环使用一个循环吗

{%  for item in django_list  %}
//Whatever you wish to do with item goes here
{% endfor %}
有关更多信息,请参阅链接

你不能为每个循环使用a吗?不是在这个例子中,JS控制迭代。你不能为每个循环使用a吗?不是在这个例子中,JS控制迭代,这就是我的代码目前的样子,但是有没有办法避免编码?我需要模板中的models方法,编码成JSON意味着除了字段之外的所有内容都丢失了。感谢您在不执行XHR的情况下无法从JavaScript访问Django代码。如果你实际上不需要代码,那么从你需要的数据中创建一个列表或dict,并对其进行编码。你可以调用方法,这就足够了。{{some_model.some_function}}。将模型编码为JSON会使我们失去这一功能。“然后从您确实需要的数据创建一个列表或dict并进行编码”那么您的意思是,对于每个模型调用所需的方法,创建一个列表并将其传递到模板中?你能说得更清楚一点吗。啊,这就是我的代码目前的样子,但是有没有办法避免编码呢?我需要模板中的models方法,编码成JSON意味着除了字段之外的所有内容都丢失了。感谢您在不执行XHR的情况下无法从JavaScript访问Django代码。如果你实际上不需要代码,那么从你需要的数据中创建一个列表或dict,并对其进行编码。你可以调用方法,这就足够了。{{some_model.some_function}}。将模型编码为JSON会使我们失去这一功能。“然后从您确实需要的数据创建一个列表或dict并进行编码”那么您的意思是,对于每个模型调用所需的方法,创建一个列表并将其传递到模板中?你能更清楚地解释一下这个评论吗?我只是想看看上面的例子是否可行。很好的建议,虽然有些情况下我们需要索引。如果是一个大的JS文件,其全局索引正在动态变化,该怎么办。我们可以在JS中有一个for循环,我们需要使用索引来访问列表。我不明白你的意思。正如我所说的,在for循环中,您始终可以使用forloop.counter来操作项目。如果你有一个带有django{%%}语法的for循环,当循环被命中时,它会立即迭代,而不受外部JS的影响。但这并不是预期的目标。如果指数的增加是基于其他因素呢?就像jQuery click事件处理程序一样。我想你是对的,如果你的需求非常特殊,你总是可以构建自己的模板标记。我只是想看看是否可以实现上面示例中的操作。很好的建议,虽然有些情况下我们需要索引。如果是一个大的JS文件,其全局索引正在动态变化,该怎么办。我们可以在JS中有一个for循环,我们需要使用索引来访问列表。我不明白你的意思。正如我所说的,在for循环中,您始终可以使用forloop.counter来操作项目。如果你有一个带有django{%%}语法的for循环,当循环被命中时,它会立即迭代,而不受外部JS的影响。但这并不是预期的目标。如果指数的增加是基于其他因素呢?就像jQuery单击事件处理程序一样。我想你是对的,如果你的需求非常特殊,你可以构建自己的模板标记。