重定向中间件无法正常工作 - Django

时间:2014-08-29 16:30:12

标签: django url-redirection django-middleware

我创建了一个简单的重定向中间件

class RedirectMiddleware(object):
    def urlredirect(self, request):
        path = self.request.build_absolute_uri()
        if "something" in path:
            URL = "http://www.someurl.com"
        else:
            URL = "http://www.otherurl.com"
        return HttpResponsePermanentRedirect(URL)

但我似乎没有工作,它没有做任何事情,是的,我把它添加到settings.py,任何想法?

1 个答案:

答案 0 :(得分:1)

您需要implement process_request

  

编写自己的中间件很容易。每个中间件组件都是一个   单个Python类,它定义了以下一个或多个方法:   process_request

     

process_request(请求)

     

request是一个HttpRequest对象。

     在Django决定之前,会在每个请求上调用process_request()   哪个视图要执行。

     

它应该返回None或HttpResponse对象。如果它返回   没有,Django将继续处理此请求,执行任何请求   其他process_request()中间件,然后是process_view()中间件,   最后,适当的观点。如果它返回一个HttpResponse   对象,Django不会打扰任何其他请求,视图或   异常中间件或适当的视图;它会应用响应   中间件到那个HttpResponse,并返回结果。