2011-09-21 62 views
0

有沒有辦法維持標籤調用之間的狀態?我需要存儲傳遞給我創建的標籤的最後一個項目。看起來好像我可以使用上下文來做到這一點,但似乎並不奏效。這裏是我的代碼:維護自定義標記調用之間的狀態?

@register.simple_tag(takes_context=True) 
def date_divider(context, date): 
    if 'last_date' not in context or context['last_date'] != date: 
     # display new date header 
     context['last_date'] = date 
    return date_header 

的問題是,新的日期頭總是創建即使傳遞的日期應該與上下文的日期。

我猜我在這裏使用上下文錯誤...有沒有一種方法來存儲在上下文中的最後一個日期還是有更好的方法來做到這一點?

回答

1

第二次到達此標記時,您輸入last_date的上下文似乎不再存在(例如,可能該上下文已被彈出?)。 A(排序的hackish)的解決方案是,以確保您插入last_date進入「最高」背景:

if 'last_date' not in context.dicts[0] or context.dicts[0]['last_date'] != date: 
    context.dicts[0]['last_date'] = date 

往往需要這種方法時,你正在寫的標籤沒有被「嵌套」,我找到了。順便說一句,我也發現這種標籤本身通常是黑客!

(並不是說這個特殊情況是,只是我的個案已經)。

+0

This Works!謝謝。 – intargc