【问题标题】:Redirect user in Python + Google App Engine在 Python + Google App Engine 中重定向用户
【发布时间】:2011-05-12 23:43:23
【问题描述】:

我正在尝试在登录用户后进行简单的重定向。我以为我可以使用 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"

【问题讨论】:

  • put print 语句会如何重定向你?
  • 大声说出我的愚蠢尝试对我有什么帮助?
  • 这绝不是愚蠢的,你必须从某个地方开始,当我第一次开始使用 AppEngine 时,我实际上尝试了同样的事情。好消息是谷歌提供了很好的文档。 :)
  • @dcrodjer:如果他在打印标题,那是有道理的。
  • FWIW, 'print' 可以工作,但你不应该从 WSGI 应用程序内部直接输出到标准输出。每当您看到“打印”声明时,您都做错了。 :)

标签: python google-app-engine redirect


【解决方案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

【讨论】:

    【解决方案2】:

    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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 2012-09-22
      • 2016-07-09
      相关资源
      最近更新 更多