是否可以在没有请求对象的情况下在Django中使用上下文处理器?

时间:2011-10-02 01:56:06

标签: django

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

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

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

2 个答案:

答案 0 :(得分:0)

好吧,你可以通过...settings.TEMPLATE_CONTEXT_PROCESSORS获取他们 的内容,但你不能使用,因为你需要一个请求实例才能这样做

答案 1 :(得分:0)

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

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