2013-10-12 2 views
2

내 응용 프로그램에서 'FlipKart'엔티티를 작성하고 HTML 양식에서 주어진 항목을 표시 할 수 있도록 쿼리를 실행 한 핸들러를 사용했습니다. 내 HTML 파일을 구성하기위한 Jinja2 템플릿이 있습니다.Google App Engine 데이터베이스가 표시되지 않습니다.

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

여기에 내가 처리하고 내 쿼리를 실행 핸들러입니다 : 여기

엔티티에 대한 코드의

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

:

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 파일입니다

그러나, 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

쿼리에 문제가 없으므로 루프 반복을 볼 수 있습니다. 귀하의 문제는 생성 엔티티 당신은 실제로 개체의 값 중 하나를 저장하지 않는

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

로 모델이 정의되어

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

에 대한 코드입니다. 이것은 매우 기본적인 파이썬입니다. 지정하지 않을 경우

클래스 생성자 호출 당신은 다른 대답에 따라뿐만 아니라 INT 변환을 할 필요가

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

해야합니다, 당신은 임무와 함께 오류가 발생하지 않은 유일한 이유는 당신입니다 속성 값. 또한

최종 일관성 때문으로 인해 추가 된 가장 최근의 실체가 표시되지 않을 수 있습니다 귀하의 요청에 유의

0

난 그냥 당신은 아마 당신의 구조 조정을 할 것이라는 점을 지적하고 싶었다 (나는 당신이 그 일부 독서를 할 수있게된다) 엔티티를 사용하여 이미 지적 된 수정을 수행 한 후에도 새로 추가 된 엔티티에 대해 계속해서 None을 얻으 므로 강력하게 일관된 u 리를 작성할 수 있습니다.

이는 결과 일관성 때문입니다. 다음을 검토하십시오 : https://developers.google.com/appengine/docs/python/datastore/structuring_for_strong_consistency