【问题标题】:List.pop() in Django Template without for loop没有 for 循环的 Django 模板中的 List.pop()
【发布时间】:2013-09-27 14:02:18
【问题描述】:

我有一个 ID 为 all_entries_user 的列表。它们基本上是我使用 TastyPie 开发的休息服务 url 的一部分。在我的 Django 模板中,我想通过迭代 all_entries_user 来使用它们

function ajaxCall(){
    $.getJSON("http://localhost:8000/api/Location/" + {{ all_entries_user.pop }} + "/?format=json",
    function(json) {
    convert(json,"googleMapUser");
        }
    );
}

使用它,我从 Service 中获取值,这会在连续的时间间隔内发生。

 interval = startInterval(ajaxCall, 3000);

每次调用时url的值都必须改变,并且必须从列表中获取

  all_entries_user

每次都给我相同的 id。

我尝试弹出值,但每次都给我相同的值

我还没有找到一种有效的方法来遍历它。

请提供建议和帮助

【问题讨论】:

    标签: javascript python django jquery django-templates


    【解决方案1】:

    你为什么不使用for construct

    {% for user in all_entries_user %}
        Do your thing with {{ user }}
    {% endfor %}
    

    【讨论】:

    • 像这样的 ajax 调用会发生 10 次,但我想要所有调用的更改值,它必须从列表中获取
    • 这是唯一可行的选择,尽管我不得不稍微调整一下我的要求。
    【解决方案2】:

    当你混合两种语言时会很混乱。发生的事情是,当模板被渲染时,您的 javascript 会“构建”一次,因此无论 javascript 访问该方法多少次,您都只有一个 URL。您可以通过使用查看源代码并检查您的 javascript 对客户端的外观来验证这一点。

    如果您希望客户端每次调用不同的 URL,您必须先将所有 ID 发送给客户端。一种方法是使用 json 序列化程序或只是一个简单的自制 javascript 数组构建器。

    这样的事情可能会奏效:

    <script>
       var allEntries = [{% for entry in all_entries_user %}{{ entry.id }},{% endfor %}];
       for (entryId in allEntries) {
          doSomethingWith(entryId);
       }
    </script>
    

    这不是从 django 填充 javascript 数组的最佳方法,但它工作得很快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-17
      • 2012-07-25
      • 1970-01-01
      • 2010-11-09
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多