【问题标题】:templating in python with GAE using GQL使用 GQL 使用 GAE 在 python 中进行模板化
【发布时间】:2012-07-23 16:02:12
【问题描述】:

我在 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 管理控制台中,我可以看到应该显示一些“发布”实体。

【问题讨论】:

    标签: python google-app-engine templates jinja2 gql


    【解决方案1】:

    尝试使用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。

    【讨论】:

      【解决方案2】:

      查看此处的文档进行查询:

      您的查询部分应如下所示:

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

      新开发银行的或:

      product_list = ndb.gql("SELECT * FROM Post")
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      • 2011-09-25
      • 1970-01-01
      • 2016-03-03
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多