【问题标题】:Is it possible to use context processors in Django without a request object?是否可以在没有请求对象的情况下在 Django 中使用上下文处理器?
【发布时间】:2011-10-02 01:56:05
【问题描述】:

Django documentation 描述了当您有请求实例时使用上下文处理器——典型用法是在呈现模板时使用RequestContext 而不是Context

但是,如果您想要上下文处理器,但不在请求/响应周期内运行,该怎么办?一个示例用例是呈现模板以响应电子邮件报告的信号或管理命令。必须在请求周期内预渲染任何内容(因此失去了信号提供的松散耦合的优势),或者必须为每次渲染调用手动调用上下文,例如“站点”,这非常不方便.

当没有request 实例时,有没有办法获取默认上下文处理器?

【问题讨论】:

    标签: django


    【解决方案1】:

    嗯,你可以通过...settings.TEMPLATE_CONTEXT_PROCESSORS 获得它们的,但是你不能使用它们,因为你需要一个请求实例才能这样做。

    【讨论】:

      【解决方案2】:

      如果渲染您的模板需要请求,为什么不在发送信号时将其作为sender 参数传递

      def my_view(request):
          my_signal.send(sender=request, foo=True)
          return HttpResponse("YadaYadaYada")
      

      【讨论】:

        猜你喜欢
        • 2012-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-18
        • 1970-01-01
        • 2022-12-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多