在Google应用引擎上,我想在模板中使用两个变量for循环:我需要输入10个项目。如果数据存储区中已有某些项目,则显示它们,否则,将该字段留空。我该怎么做?感谢。
顺便说一句,我注意到Django中有“multifor”,但我不知道如何在GAE上安装它。main.py:
def mainPage(webapp2.RequestHandler):
query = db.Query(Item)
items = query.fetch(limit=10)
template_values = {'range': range(10), 'items': items}
common.render(handler, 'main.html', template_values)
main.html中:
<form action=... method="post">
{% for i in range; for item in items %}
<input type="text" name="name" value="item.name">
{% endfor %}
<input type="submit">
</form>
答案 0 :(得分:5)
不确定您使用的是哪个模板引擎,但是如何创建10个元素的列表并将其填入查询结果呢?类似的东西:
my_list = [None for _ in range(10)]
然后,一旦获得查询结果,将它们添加到列表中(对象将作为对象列表返回,因此这只是一个概念性示例):
>>> new_list = ['one', 'two', 'three']
>>> my_list[:len(new_list)] = new_list
>>> my_list
['one', 'two', 'three', None, None, None, None, None, None, None]
现在,当您将my_list
传递到模板中时:
<form action=... method="post">
{% for item in my_list %}
{% if item %}
<input type="text" name="name" value="item.name">
{% else %}
<input type="text" name="<your_blank_value>" value="<your_blank>">
{% endif %}
{% endfor %}
<input type="submit">
</form>
答案 1 :(得分:1)
您可能会发现这些想法也很有用
(1)如果模板中的循环是
{% for item in items %}
然后您可以使用变量{{forloop.counter0}}
或{{forloop.counter1}}
来获取循环的索引。
(2)您可以将元组的Python列表传递给模板,并以这种方式编写for循环:
{% for index, name in names %}