2012-11-19 1 views
2

Google 앱 엔진에서 루프 용 템플릿에 두 개의 변수를 사용하고 싶습니다. 예를 들어 10 개의 항목을 입력해야합니다. 데이터 스토어에 이미 항목이있는 경우 표시하고, 그렇지 않으면 필드를 비워 둡니다. 어떻게해야합니까? 감사.두 개의 변수를 통해 Google App Engine 템플릿 루프

BTW, 나는 장고에 "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> 

답변

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> 
+0

감사 만, RocketDonkey을. 그건 내 문제를 해결 ;-) –

1

(1) 템플릿의 루프가

{% for item in items %} 

는 다음 루프의 인덱스를 얻을 수있는 변수 {{forloop.counter0}} 또는 {{forloop.counter1}}를 사용할 수있는 경우.

(2) 당신은 당신의 템플릿에 튜플의 파이썬 목록을 전달하고 루프에 대해이 방법을 쓸 수 있습니다 :

{% for index, name in names %}