Перенаправить пользователя в Python + Google App Engine - PullRequest
7 голосов
/ 20 ноября 2010

Я пытаюсь сделать простое перенаправление после регистрации пользователя. Я думал, что мог бы использовать метод print "Location: ...", но это, похоже, не помогает.

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"

Ответы [ 2 ]

14 голосов
/ 20 ноября 2010

RequestHandler имеет метод redirect(), который вы можете использовать. Он принимает два параметра, первый из которых является 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 голос
/ 12 февраля 2013

Другой вариант - сделать это прямо на 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...