2013-10-12 6 views
2

Я создал сущность 'FlipKart' в своем приложении и использовал обработчик, где я запустил запрос, чтобы я мог отобразить данную запись в моей HTML-форме. У меня есть шаблон Jinja2 для организации моего html-файла.База данных 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> 

Однако, п я запустить это приложение, я получаю следующий текст после формы в браузере:

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() 

Вы на самом деле не хранить любые значения в сущности. Это очень простой питон.

вызов конструктора класса должен быть

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

Вы должны сделать Int преобразования, а также за другой ответ, единственная причина, вы не получаете сообщение об ошибке с присвоением это вы где никогда не назначая значения для свойств.

Также обратите внимание на ваш запрос не может показать самую последнюю сущность добавляемые из-за возможного consistancy, (я дам вам сделать некоторое чтение на что)

0

Я просто хотел указать на то, что вы, вероятно, хотите провести реструктуризацию вашего чтобы вы могли делать строго согласованные запросы, поскольку вы продолжите получать None, для вновь добавленных объектов даже после внесения исправлений, которые уже были указаны.

Это связано с возможной последовательностью. Проверьте: https://developers.google.com/appengine/docs/python/datastore/structuring_for_strong_consistency

Смежные вопросы