2010-11-20 43 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