шаблоны в python с GAE с использованием GQL

Я запускаю python в GAE и застрял на нескольких вопросах, связанных с запросами GQL и использованием шаблонов.

Когда я загружаю домашнюю страницу, она запускает эту функцию:

class MainPage()
    def get(self):
            product_list = Post.gql("ORDER BY product LIMIT 10")
            self.render('index.html', product_list = product_list)

    def post(self):

            email = self.request.get('email')
            product = self.request.get('product')

            if email and product:
                p = Post(parent = blog_key(), email = email, product = product)
                p.put()

Он должен передавать список продуктов на главную страницу, а также принимать новые записи через форму на главной странице.

индекс.html:

<form id="inputs" method="post">
   <input id="product" type="text" name="product" value="product?" value="{{product}}"></input>
   <input type="text" name="email" id="email" value="email?" value="{{email}}"></input>
   <button type="submit" value="submit!">Submit</button>
</form>
<div id="results">
   {% for p in product_list %}
       {{p.product}}<br>
       {{p.email}}
        <br><br>
   {% endfor %}
</div>

Когда я загружаю домашнюю страницу, в разделе «Результаты» ничего не отображается. В консоли администратора GAE я вижу, что у меня есть несколько объектов «Post», которые должны отображаться.


person Nic Meiring    schedule 23.07.2012    source источник


Ответы (2)


Взгляните на документы здесь для запроса:

Ваша часть запроса должна выглядеть примерно так:

product_list = db.GqlQuery("SELECT * FROM Post")

ИЛИ для NDB:

product_list = ndb.gql("SELECT * FROM Post")
person Sologoub    schedule 23.07.2012

Попробуйте явно выполнить запрос с помощью run():

class MainPage()
    def get(self):
            product_list = Post.gql("ORDER BY product LIMIT 10").run()
            self.render('index.html', product_list = product_list)

Объект gql должен запускаться неявно, когда он используется как итерируемый, но я не знаю, будет ли это работать с jinja.

person Adam Crossland    schedule 23.07.2012