我在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 %}]
答案 0 :(得分:0)
您可以通过两种方式执行此操作。
将所有值存储在列表中,JavaScript将其视为json数组,并使用JavaScript本身进行循环。这样,您将无法从服务器更新记录,因此必须预取所有必须循环的值。
您可以使用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