我有一個過濾器currency
,它以美元價值並將其轉換爲貨幣(美元或英鎊)。要轉換的貨幣存儲在會話中,但過濾器不需要RequestContext
,所以我無法從中直接獲取它。Django - 從自定義過濾器中訪問RequestContext
有沒有比將相關會話元素傳遞到模板並將模板作爲參數作爲過濾器更好的方法?雖然這種方法起作用,但看起來相當可怕,而且我很可能最終將貨幣傳遞給(幾乎)所有模板。
我的過濾器目前看起來是這樣的:如果你創建一個模板標籤,而不是一個過濾器的
def currency(value, currency):
if currency == 'usd':
val = '$%.2f' % value
return mark_safe(val)
d = Decimal(value)
val = '£%.2f' % (d*Decimal('0.63'))
return mark_safe(val)
@亞當 - 也許我很厚,但我不能在那些文檔中看到如何從自定義模板標籤中訪問會話變量。你能否給我一個例子或指出我錯過了什麼? –
啊 - 挖掘它似乎是作爲第一個參數傳遞給標籤(剛剛找到一個例子,它添加了一個類與鏈接匹配正則表達式,看起來(一)有用和(二)適應性 - http:// gnuvince .wordpress.com/2007/09/14/A-Django的模板標籤換了,目前活躍的頁/)。 –
對,上下文是模板標籤節點上渲染方法的標準參數。如果你需要一個更具體的例子,我相信我可以鼓起一個。 – Adam