我可以在Python的for循环中使用变量作为索引吗?

时间:2019-03-10 22:49:29

标签: python for-loop chart.js

我在python模板上有这个for循环,以实现值数组:

char **order_deck(char *unsorted_deck) {
    char *ptr;
    char ** decks = NULL;
    int size = 0;

    ptr = strtok(unsorted_deck, " ");

    while (ptr != NULL) {
      size += 1;
      decks = realloc(decks, size * sizeof(char *));
      if (deck == NULL) {
        /* not enough memory*/
        return NULL;
      }

      decks[size - 1] = ptr; /* or  decks[size - 1] = strdup(ptr); */
      printf("%i:%s\n",size - 1, decks[size - 1]);
      ptr = strtok(NULL, " ");
    }

    /* add NULL ptr */
    decks = realloc(decks, (size + 1) * sizeof(char *));
    if (desk != NULL)
      decks[size] = NULL

    return decks;
}

我想知道是否可以使用 int 变量作为索引,而不是直接编写它,如上面的代码所示。

我需要使用下拉列表中所选值的索引:

labels: [{% for bftimes in dataBF.buffers.0.times %} "{{ bftimes }}", {% endfor %}]

2 个答案:

答案 0 :(得分:0)

您可以通过两种方式执行此操作。

  1. 将所有值存储在列表中,JavaScript将其视为json数组,并使用JavaScript本身进行循环。这样,您将无法从服务器更新记录,因此必须预取所有必须循环的值。

  2. 您可以使用AJAX调用从JavaScript传递选定的索引,然后返回新数组并使用JavaScript本身在模板中对其进行更新。

答案 1 :(得分:0)

该问题需要更多背景信息,以帮助我们了解您的目标。看来您正在将python和javascript数据结构混合在一起。

我的一般建议是,首先将python数据结构准备为所需的结构,然后将其转换为json。 Django模板语言中的循环仅应在简单情况下使用。

如果您使用django> = 2.1,则可以使用json-script模板标记

 {{ data|json_script:"my-data" }}

https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#json-script

如果没有,您可以使用

# views.py
import json
def foo(request):
    dataBF = {"a": [{"c": [1,2,3,1,1]},{"d": [1,2,3,1,1]}]}
    # here you can manipulate the data accordingly to what you need
    data = json.dumps(dataBF)
    return render(request, "index.html", context={"data": data})

在模板方面

<script>
    const datajs = {{ data | safe }};
</script>

datajs是可以使用的javascript对象。

我举了一个例子,您可以检查https://repl.it/@IvanPereira/python-to-javascript-django-template