繁体   English   中英

如何在Django模板中迭代动态变量

[英]How to iterate a dynamic variable in a Django template

有人对此提出了一些稍微相关的问题,但是答案并没有真正帮助我。 当我尝试实现在其他地方( 自定义模板 )建议的潜在好提示时,我没有得到期望的结果。

在我的模板中,我要遍历字典中的一组键。 字典本身源自提交Django表单集。

XML模板代码段:(我正在渲染到XML文件)

{% for x in range %}
    <file type="{{ form-'x'-type }}" viewpath="{{ form-'x'-file }}"/>
{% endfor %}

上述显然不起作用。 迭代有效。 range变量是与从视图传递到XML模板的range(int(request.POST['form-TOTAL_FORM']))相对应的python参数。

在模板的每次迭代中,我都需要{{ form-0-type }}{{ form-1-type}}{{ form-2-type }}等。

我怎么做? 如果确实需要为此使用自定义过滤器,该怎么做?

我希望这个问题(和答案)可以帮助许多人遇到同样的问题。

谢谢。

编辑:(已发布词典)

<QueryDict: 
{
  u'form-MAX_NUM_FORMS': [u'1000'], 
  u'form-INITIAL_FORMS': [u'0'], 
  u'form-TOTAL_FORMS': [u'2'], 
  u'form-0-type': [u'1'], 
  u'form-1-type': [u'2'], 
  u'csrfmiddlewaretoken': [u'LpkjdDcqRCL4VPM0SAuU7efgZjgeubTN']
}>

附加说明:在第二个视图中,我查找外键的值,并将值放在另一个字典中,然后将其发送到XML模板。

这样做的代码片段:

detailed_request = {}
for x in range(0, int(request.POST['form-TOTAL_FORMS'])):
    detailed_request['form-'+str(x)+'-type'] = Upload_Type.objects.get(pk=request.POST['form-'+ str(x)+'-type'])
    detailed_request['form-'+str(x)+'-file'] = request.FILES['form-'+str(x)+'-file']

上面是一个工作片段。 当我跟踪detailed_request ,我拥有所需的所有信息:

{
  'form-1-type': <Upload_Type: malib>,
  'form-0-type': <Upload_Type: axf_file>
}

万一有人遇到同样的问题,我实际上改变了我做事的方式。

我不迭代模板中的表单集。 相反,我在这里实现了Paolo Bergantino的解决方案: 使用Ajax将表单动态添加到Django表单集中

然后在我看来,我只是从request.FILES获取所需的每个数据。

我希望这对使用相同错误方法开始的任何人有所帮助。

您可以通过以下变量访问for循环帮助器变量

forloop.counter   The current iteration of the loop (1-indexed)
forloop.counter0  The current iteration of the loop (0-indexed)

有关更多信息, 访问: https : //docs.djangoproject.com/en/dev/ref/templates/builtins/#for

所以你会...

{{ form }}-{{ forloop.counter }}-{{ type }}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM