0

私は GAE で python を実行していますが、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()

製品のリストをホームページに渡し、ホームページのフォームから新しいエントリを受け入れる必要があります。

index.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>

ホームページを読み込むと、「結果」div に何も表示されません。GAE 管理コンソールでは、いくつかの "Post" エンティティが表示されるはずです。

4

2 に答える 2

3

次のクエリを明示的に実行してみてください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 で機能するかどうかはわかりません。

于 2012-07-23T16:20:25.897 に答える
1

クエリについては、こちらのドキュメントをご覧ください。

クエリ部分は次のようになります。

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

または NDB の場合:

product_list = ndb.gql("SELECT * FROM Post")
于 2012-07-23T16:17:49.867 に答える