我有一个在谷歌应用引擎中运行的 python 中间件类,我试图在其中执行 301 重定向:
from webob import Request
from webob.exc import HTTPMovedPermanently
from urlparse import urlparse
class MyMiddleware(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
request = Request(environ)
response = request.get_response(self.app)
if response.status_int == 404:
raise HTTPMovedPermanently(location="/")
return response(environ, start_response)
这是一个简化版本,但说明了问题。我找不到有关如何从中间件执行 302/301 重定向的任何信息!所有信息都与从处理程序或其他框架执行此操作有关,这些方法都会在谷歌应用引擎中产生错误。
这是我的 main.py:
import os
import webapp2
import jinja2
from seo import *
from notfound import *
JINJA_ENVIRONMENT = jinja2.Environment(
loader = jinja2.FileSystemLoader(os.path.dirname(__file__)),
extensions = ['jinja2.ext.autoescape'])
class MainHandler(webapp2.RequestHandler):
def get(self):
template = JINJA_ENVIRONMENT.get_template('home.html')
self.response.write(template.render())
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug = True)
app = MyMiddleware(app)