2013-10-12 71 views
2

我在应用程序中创建了一个实体“FlipKart”,并使用了一个处理程序,我已经运行了一个查询,以便可以在我的HTML表单中显示给定条目。我有用于组织我的html文件的Jinja2模板。未显示Google App Engine数据库

下面是实体代码:

class FlipKart(db.Model): 
    name = db.StringProperty()    
    quantity = db.IntegerProperty() 
    total = db.IntegerProperty()  

这里就是我处理和运行我的查询处理程序:

class WebeHandler(Handler):   
    def get(self): 
     self.render("we.html") 
    def post(self): 
     b_name = self.request.get("bkname") 
     b_quantity = self.request.get("qnty") 
     b_total = self.request.get("tot")   

     if(b_name and b_quantity and b_total): 
      a = FlipKart(BookName = b_name, Quantity = b_quantity, GrandTotal = b_total) 
      a.put() 
      self.final() 
    def final(self): 
     flips = db.GqlQuery("SELECT * FROM FlipKart") 
     self.render("we.html", flips = flips) 

这里是我的html文件:

<html> 
<head> 
    <title>Web Engineering</title> 
    <style type = "text/css"> 

    </style> 
</head> 

<body> 
    <form method = "post"> 
     Book Name<input type = "text" name = "bkname"> 
     <br> 
     Quantity<input type = "text" name = "qnty"> 
     <br> 
     Total Prize<input type = "number" name = "tot"> 
     <br> 
     <input type = "submit"> 
     <br><br><br> 
     <hr> 

     {% 
      for flip in flips 
     %} 
      <div>You have ordered a {{flip.name}}</div> 
     {%endfor%} 
    </form> 
</body> 

然而,whe n我运行这个应用程序,在浏览器中获得以下文本:

You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 
You have ordered a None 

什么似乎是问题?

回答

5

你的查询没有问题,你可以看到循环重复。 你的问题是你创建的实体

a = FlipKart(BookName = b_name, Quantity = b_quantity, GrandTotal = b_total)

的地方作为

class FlipKart(db.Model): 
    name = db.StringProperty()    
    quantity = db.IntegerProperty() 
    total = db.IntegerProperty() 

你实际上并没有存储任何的实体值的模型定义代码。这是非常基本的python。

类构造函数调用应该是

a = FlipKart(name = b_name, quantity = b_quantity, total = b_total)

你需要做的INT转换以及每个对方的回答,你不分配得到一个错误的唯一原因是你在哪里从未分配属性的值。

另外请注意您的查询可能不会显示由于最终相合最近添加的实体,(我会让你做一些阅读上)