我在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管理控制台中,我可以看到我有一些应该显示的“发布”实体。
答案 0 :(得分: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。
答案 1 :(得分:1)
请查看此处的文档进行查询:
您的查询部分应如下所示:
product_list = db.GqlQuery("SELECT * FROM Post")
或NDB:
product_list = ndb.gql("SELECT * FROM Post")