2010-11-20 24 views
7

我正在嘗試在記錄用戶之後做一個簡單的重定向。我以爲我可以使用打印「位置:...」方法,但似乎沒有辦法。在Python + Google App Engine中重定向用戶

class MainPage(webapp.RequestHandler): 
    def get(self): 

     ip = self.request.remote_addr 
     log = Log() 
     log.ip_address = ip 
     log.put() 
     print "Location:http://www.appurl.com" 
+0

怎麼會把打印語句重定向到你? – crodjer 2010-11-20 04:41:23

+2

如何呼喚我的愚蠢嘗試幫助我? – 2010-11-20 04:42:50

+2

它不是什麼愚蠢的東西,你必須從某個地方開始,而且當我第一次開始使用AppEngine時,我實際上嘗試了同樣的事情。好消息是Google提供了很棒的文檔。 :) – Alex 2010-11-20 04:49:57

回答

14

RequestHandlerredirect()方法,您可以使用。它需要兩個參數,第一個是要重定向的url,第二個是布爾值。如果傳遞true,它會發送一個301代碼來指示永久重定向,如果您不傳遞一個明確的值,它將默認爲false,並向客戶端發送302代碼以指示臨時重定向。

事情是這樣的:

class MainPage(webapp.RequestHandler): 
    def get(self): 

     ip = self.request.remote_addr 
     log = Log() 
     log.ip_address = ip 
     log.put() 
     self.redirect("http://www.appurl.com") # replaced this -> print "Location:http://www.appurl.com" 
1

另一種選擇是直接做在appengine_config.py

也就是說,如果你想重定向一切「http://www.google.com」,你可以添加以下內容:

def webapp_add_wsgi_middleware(app): 

    return webapp.WSGIApplication([('/*', webapp.RedirectHandler.new_factory('http://www.google.com', permanent=True))], debug=True) 

即如果你想根據主機做些事情你可以做:

def webapp_add_wsgi_middleware(app): 

    if 'mydomain.com' in os.environ.get('HTTP_HOST'): 
     return webapp.WSGIApplication([('/*', webapp.RedirectHandler.new_factory('http://www.google.com/', permanent=True))], 
    debug=True) 
    else: 
     return app 
相關問題