2012-06-19 4 views
1

내 앱, Datastore, webapp2 및 양식 별 '응답'이 모두 작동합니다.하지만 이전 방문자의 쿼리 결과를 표시하지 않고 페이지를로드해야합니다. 양식 제출 후 현재 양식 제출자에 대해서만 조회 결과가 필요합니다. 세션 또는 헤더 솔루션입니까? 아니면이를 수행하기 위해 GqlQuery를 편집 할 수 있습니까?세션에 대해서만 GqlQuery 결과가 표시됩니까?

messages = db.GqlQuery("SELECT * " 
           "FROM Visitor " 
           "ORDER BY date DESC LIMIT 1") #obviously shows previous form submit 
     for message in messages: 
      if message.name == "" or message.mood == "": 
       self.response.out.write("<div class='textright'>Type name and select.</div>") 
       self.response.out.write("</body></html>") 
      elif message.mood == "bad" and message.name != "": 
       self.response.out.write("<body><html>") 
       self.response.out.write("<div class='textright'>Stay the course 

^^이 마지막 섹션은 현재 방문자가 양식을 제출 한 후에 만 ​​를 표시 할 필요가 내 "응답"입니다.

+0

"템플릿 사용"은 동일한 페이지에 머무를 수있는 솔루션이라고 생각했던 나의 이전 대답에서 어떻게 나왔는지 전혀 알지 못합니다. 그것은 내가 전혀 말한 것이 아닙니다. –

+0

구문 오류가 발생하면 stacktrace와 그 원인이되는 코드를 표시해야합니다. –

+0

Nick, 위의 수정 된 코드를 살펴 보시겠습니까? – p1nesap

답변

1

어떻게 작동하는지 이해할 때까지 Getting Started 섹션, 특히 templates 섹션을 살펴보실 것을 강력히 권합니다.

그러나 방금 행동에 예를보고 싶다면이 ( read more) 시도 :
class Process(webapp.RequestHandler): 
    def post(self): 
    name = self.request.get("name") 
    mood = self.request.get("mood") 

    if mood == "bad" and name != "": 
     self.response.out.write("<html><body>") 
     self.response.out.write("<h1>Welcome to the Internet!</h1>") 
     self.response.out.write("<p>My mood is %s and my name is %s</p>" % (mood, name)) 
     self.response.out.write("</body></html>") 
    else: 
     self.response.out.write("<html><body>") 
     self.response.out.write("<h1>Welcome to the Internet anyway!</h1>") 
     self.response.out.write("</body></html>") 

은 또한 당신의 GAE 애플리케이션에서 print을 사용하지 않습니다 디버깅 등을 위해 대신 logger를 사용합니다. 당신은 당신이 <html> 태그가 기록되기 전에, 그렇지 않으면

self.response.out.write("<!-- name: %s -->" % self.request.get("name")) 

을 시도 할 것을 원하는 경우 특히, 디버깅 목적을 위해 값을 방출 할 경우

+0

Lipis, 코드와 링크에 감사드립니다. 나는 내가 가까웠다 고 생각한다. 나는 노출되지 않은 인쇄물이 비 클래스 .py 스크립트 용이고 s.r.o.w. 수업 이니? GAE/API 공간에는 페이지가 너무 많아서 누군가가 정확한 문서에 링크되도록하는 데 도움이됩니다. – p1nesap

+0

위의 코드는 데이터 저장소에 물건을 적용하는 것과 아무런 관련이 없습니다. 적어도 두 번 이상 시작하기 전에 각 섹션을 읽어야합니다. http://goo.gl/rRucs – Lipis

+0

@pavl '/process /'끝에 슬래시를 넣으십시오 ... 왜냐하면 당신의'

'에'action = "."이 있고 전체 URL이 아니기 때문입니다 ... – Lipis

1

, 브라우저는 혼란스러워 할 수도 있습니다.

print 처리기에서 가져온 내용이 예상 한 것일 수 없습니다.

스 니펫에서 var7var9의 출처는 표시되지 않았습니다. 나는 그 글을 실현 할

은/데이터 저장소에 .put 형태의 값이 자동으로 새 페이지 난 당신이 오해 생각

로 사용자를 리디렉션. 귀하의 코드가 put() 또는 리디렉션의 위치를 ​​알려주지 않았습니다. post() 처리기는 자동으로 처리하지 않습니다.

어떤 자습서를보고 계십니까? 아마도 우리는 모호한 표현을 강화해야 할 것입니다.