微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实现Django中间件来实现响应行为

如何解决实现Django中间件来实现响应行为

我对django官方文档中的中间件描述有些困惑,并且似乎无法绕开它。

在实现基于类的中间件时,它看起来像这样(例如,来自docs):

class SimpleMiddleware:
    def __init__(self,get_response):
        self.get_response = get_response

    def __call__(self,request):
        response = self.get_response(request)
        return response

调用中间件以获取请求和响应。这是我的第一个问题:

如何根据我正在处理请求还是响应来实现不同的行为?

而且,这与此相关,我有点困惑,因为似乎还有一种旧的过时的中间件编写方法,可以覆盖方法process.request()process_response()。我不确定这种中间件编写方法是否现在不建议使用。通常,可以找到Django文档,但这部分(对我而言)有点令人困惑。

有人可以帮我解决这个问题吗?

解决方法

基本上,responses = self.get_response(request)之前的代码应处理该请求。 self.get_response()将从视图中获取响应,然后执行该响应之后的代码。最后,您需要从函数返回响应。这是可视化效果:

class SimpleMiddleware:
    def __init__(self,get_response):
        self.get_response = get_response

    def __call__(self,request):
        # Codes here will process the request
        # -----------------------------------
        response = self.get_response(request)
        # -----------------------------------
        # Codes here will process the response
        return response

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。