2015-01-15 29 views
0

在上下文處理器中,我希望能夠訪問在裝飾器中設置的值。所以,事件的順序是:將值從裝飾器傳遞到django中的上下文處理器

  • 裝飾套價值
  • 背景處理器訪問運行看重
  • 視圖顯示

的最終目標是能夠有條件地運行上下文處理器僅用於某些視圖。也許有比使用裝飾器更好的方法?

回答

1

您可以讓修飾器向請求對象添加一個屬性,然後在上下文處理器中訪問該值。

例如,可以使用下面的裝飾:

def add_value(function): 
    def wrap(request, *args, **kwargs): 
     request.extra_value = True 
     return function(request, *args, **kwargs) 
    return wrap 

然後就可以訪問它在上下文處理器:

def extra_value_context_processor(request): 
    if request.extra_value: 
     ...