2010-11-20 16 views
7

Sto provando a eseguire un semplice reindirizzamento dopo aver registrato l'utente. Ho pensato di poter usare il metodo "Location: ..." ma non sembra che faccia il trucco.Reindirizza utente in 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

come si reindirizza l'istruzione di stampa? – crodjer

+2

come potrebbe aiutarmi il mio stupido tentativo? –

+2

Non è in alcun modo stupido, devi iniziare da qualche parte e in realtà ho provato la stessa cosa quando ho iniziato su AppEngine. La buona notizia è che Google offre un'ottima documentazione. :) – Alex

risposta

14

RequestHandler ha un metodo redirect() che è possibile utilizzare. Richiede due parametri, il primo è l'url per reindirizzare a, e il secondo un valore booleano. Se si passa true, invia un codice 301 per indicare un reindirizzamento permanente, se non si passa un valore esplicito, viene impostato su false e invia al client un codice 302 per indicare un reindirizzamento temporaneo.

Qualcosa di simile a questo:

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

Un'altra opzione sarebbe quella di farlo direttamente sul appengine_config.py

cioè se si desidera reindirizzare tutto a "http://www.google.com" si potrebbe aggiungere il seguente:

def webapp_add_wsgi_middleware(app): 

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

ie se si vuole fare qualcosa in base all'host che si può fare:

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