2013-07-29 4 views
0

저는 Google 앱 엔진에 익숙하지 않습니다.이 코드는 guestbook Google 코드 예제입니다. 내 문제는 무엇입니까 게시물을 게시 할 때 그것을 표시하지 않지만 내가 두 번째 게시물을 게시 할 때 첫 번째 게시물을 표시합니다. 페이지가 처음 새로 고쳐 져야하고이 코드처럼 보일 것 같습니다. "self.redirect ('/')"는 프로그램보다 한 걸음 뒤로 물러납니다. 아니면 저에게 다른 문제가 있습니다. 내 컴퓨터에 관한 것이면 잘 모르겠지만 도와 주시면 감사하겠습니다.페이지 새로 고침

그리고 여기에 원래 코드 :

import cgi 
import os 

from google.appengine.api import users 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 
from google.appengine.ext import db 
from google.appengine.ext.webapp import template 

class Greeting(db.Model): 
    author = db.UserProperty() 
    content = db.StringProperty(multiline=True) 
    date = db.DateTimeProperty(auto_now_add=True) 

class MainPage(webapp.RequestHandler): 
    def get(self): 
    greetings_query = Greeting.all().order('-date') 
    greetings = greetings_query.fetch(10) 

    if users.get_current_user(): 
     url = users.create_logout_url(self.request.uri) 
     url_linktext = 'Logout' 
    else: 
     url = users.create_login_url(self.request.uri) 
     url_linktext = 'Login' 

    template_values = { 
     'greetings': greetings, 
     'url': url, 
     'url_linktext': url_linktext, 
     } 

    path = os.path.join(os.path.dirname(__file__), 'index.html') 
    self.response.out.write(template.render(path, template_values)) 


class Guestbook(webapp.RequestHandler): 
    def post(self): 
    greeting = Greeting() 

    if users.get_current_user(): 
     greeting.author = users.get_current_user() 

    greeting.content = self.request.get('content') 
    greeting.put() 
    self.redirect('/') 

application = webapp.WSGIApplication(
            [('/', MainPage), 
             ('/sign', Guestbook)], 
            debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

답변

1

이 코드와 아무 잘못이 있음을 볼 수 없습니다, 그래서 브라우저가 메인 페이지를 캐시 등 표시 할 수 있다고 생각하는 경향이다 AppEngine 사이트에 실제로 전화하지 않고도 결과를 얻을 수 있습니다. 브라우저가 서버에 전화를 걸게하는 URL 끝에 매개 변수를 추가하여 리디렉션을 수정하는 것이 좋습니다. 접근 방법은 다음과 같습니다.

파일 상단의 가져 오기에 import time을 추가하십시오.

변경 Guestbookpost 방법의 끝 읽기 : 브라우저가 서버에 새로운 실제 요청을해야 할 것이다 URL에 추가됩니다

timestamp = str(time.time()).replace(".","") 
self.redirect('/?cachebuster=' + timestamp) 

가져 오기 쿼리 매개 변수 값을.

편집 : 어리석은 나를. 나는 당신이보고있는 것이 의 일관성의 효과라고 생각합니다.. 즉, Google의 고급 복제 데이터 스토어는 앱의 데이터를 여러 데이터 센터에 저장하지만, 과 매우 일관된 검색어를 사용할 때 보장해야 할 특별한 조치를 취해야합니다. 결과; 그렇지 않으면 쿼리를 제공하는 데이터 센터가 아직 새 데이터로 업데이트를받지 못했을 수 있습니다.

그것은 모두 아주 잘하는 App Engine 개발자 문서에 설명되어 있습니다 : https://developers.google.com/appengine/docs/python/datastore/structuring_for_strong_consistency

+0

그것은 작동하지 않았다하지만 덕분에 – billwild

+0

@billwild 내 편집을 선택합니다. 여기에는 AppEngine 문서에 대한 링크가 포함되어있어 사용자에게 어떤 일이 일어나고 있는지 정확하게 설명합니다. –