2010-11-20 25 views
7

Estoy intentando hacer una redirección simple después de iniciar sesión en el usuario. Pensé que podría usar el método de impresión "Ubicación: ..." pero eso no parece ser el truco.Redirigir usuario en 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

¿cómo se podría redirigir la declaración de impresión? – crodjer

+2

¿cómo podría ayudarme llamando a mi estúpido intento? –

+2

No es de ninguna manera estúpido, tienes que empezar en algún lado y en realidad probé lo mismo cuando comencé en AppEngine. La buena noticia es que Google proporciona una excelente documentación. :) – Alex

Respuesta

14

RequestHandler tiene un método redirect() que puede utilizar. Toma dos parámetros, el primero es la url a redirigir a, y el segundo es un valor booleano. Si pasa true, envía un código 301 para indicar una redirección permanente, si no le pasa un valor explícito, se convierte en falso y envía al cliente un código 302 para indicar una redirección temporal.

Algo como esto:

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

Otra opción sería la de hacerlo directamente en appengine_config.py

es decir, si desea redirigir todo para "http://www.google.com" Se podría añadir lo siguiente:

def webapp_add_wsgi_middleware(app): 

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

es decir, si quiere hacer algo basado en el host, puede hacerlo:

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