0

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

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

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

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

以上显然是行不通的。迭代有效。该range变量是对应于range(int(request.POST['form-TOTAL_FORM']))从视图传递到 XML 模板的 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>
}
4

2 回答 2

0

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

我不迭代模板中的表单集。相反,我在这里实现了 Paolo Bergantino 的解决方案: Dynamically add a form to a Django formset with Ajax

然后在我看来,我只是从中获取我需要的所有数据request.FILES

我希望这可以帮助任何以同样错误的方法开始的人。

于 2013-09-12T16:17:44.733 回答
-2

您可以通过以下变量访问 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 }}

于 2013-09-10T13:45:37.950 回答