gpt4 book ai didi

Django 模板 : How to access a form field equal to a variable value?

转载 作者:行者123 更新时间:2023-12-02 11:56:58 25 4
gpt4 key购买 nike

想象一下以下用例:我有一个报告模板字典。每个报告模板都有一个 ID 和名称。它看起来或多或少像这样:

reports = [ { 'ID' : 'A1',
'NAME' : 'special report 1 for department A',
... (other fields irrelevant to the question's matter)
},
{ 'ID' : 'X9',
'NAME' : 'special report 9 for department X',
... (other fields irrelevant to the question's matter)
},
]

对报告的访问和可见性将存储在数据库中。
我创建了一个表单,其字段名称等于报告的 ID。一切都很顺利,直到我必须在模板中显示表单的那一刻。我不知道如何访问正确的表单字段。此语法不起作用:

{% for report in reports %}
<tr>
<td>{{ report.ID }}</td>
<td>{{ report.NAME }}</td>

<td>{{ form.report.ID }}</td>

</tr>
{% endfor %}

另外:

{% for report in reports %}
<tr>
<td>{{ report.ID }}</td>
<td>{{ report.NAME }}</td>
{% with report.ID as key %}
<td>{{ form.key }}</td>
{% endwith %}
</tr>
{% endfor %}

不起作用。

语法应该是什么样的?下面的代码中应该用什么代替问号?

{% for report in reports %}
<tr>
<td>{{ report.ID }}</td>
<td>{{ report.NAME }}</td>

<td>{{ form.??? }}</td>

</tr>
{% endfor %}

我遇到了这个解决方案:Django Templates: Form field name as variable?我想如果没有其他方法来解决我的问题,我就必须使用它。

最佳答案

不鼓励这样做,因为模板应该尽可能没有逻辑。但在实践中,这种情况总是会出现。您可以制作一个模板过滤器来执行此操作:

@register.filter(name='get')
def get(o, index):
try:
return o[index]
except:
return settings.TEMPLATE_STRING_IF_INVALID

然后,在模板中,适当加载 templatetags 库后:

{% for report in reports %}
<tr>
...
<td>{{ form|get:report.ID }}</td>
</tr>
{% endfor %}

关于Django 模板 : How to access a form field equal to a variable value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11526420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com