Google App Engine模板循环遍历两个变量

Ran*_*ang 2 python google-app-engine templates

在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)
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

Roc*_*key 5

不确定您正在使用哪个模板引擎,但是如何创建一个包含10个元素的列表并将其填入查询结果呢?就像是:

my_list = [None for _ in range(10)]
Run Code Online (Sandbox Code Playgroud)

然后,一旦获得查询结果,将它们添加到列表中(对象将作为对象列表返回,因此这只是一个概念性示例):

>>> new_list = ['one', 'two', 'three']
>>> my_list[:len(new_list)] = new_list
>>> my_list
['one', 'two', 'three', None, None, None, None, None, None, None]
Run Code Online (Sandbox Code Playgroud)

现在当你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>
Run Code Online (Sandbox Code Playgroud)