2

Google App Engineで、テンプレートforループで2つの変数を使用したいと思います。たとえば、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>
4

2 に答える 2

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>
于 2012-11-19T02:09:25.430 に答える
1

これらのアイデアも役立つかもしれません

(1)テンプレートのループが

{% for item in items %}

次に、変数{{forloop.counter0}}または{{forloop.counter1}}を使用してループのインデックスを取得できます。

(2)タプルのPythonリストをテンプレートに渡し、次のようにforループを記述できます。

{% for index, name in names %}
于 2012-11-21T13:50:44.557 に答える