2012-07-04 119 views
2

我已經看到了足夠多的示例,允許我在模板中聲明新變量並設置其值。但我想要做的是更新模板內某個特定變量的值。更新模板中變量的值 - django

例如我有一個對象的日期時間字段,我想根據模板中的request.user添加時區。因此,我將創建一個template filter,如{% add_timezone object.created %},它將執行的操作是它會將時區添加到object.created之後,每當我訪問{{object.created}}時,它會給我更新的值。

有人可以告訴我這是怎麼做到的。我知道我需要更新模板過濾器中的context變量。但不知道如何。

+1

你嘗試過什麼至今?這是stackoverflow,而不是doalltheworkforme.com。 –

+0

這樣的邏輯真的不應該在模板中,你知道。爲什麼你不能在視圖中這樣做? –

+0

我不想在視圖中這樣做,因爲查詢集中可能有日期字段,然後我必須更改查詢集本身的屬性。使用這個模板標籤,我可以使它非常通用 – Sachin

回答

2

你不能在模板修改的值,但是你可以定義使用{% with %}標籤「範圍」變量:

{% with created=object.created|add_timezone %} 
    Date created with fixed timezone: {{ created }} 
{% endwith %} 

其中add_timezone是一個簡單的過濾器:

def add_timezone(value): 
    adjusted_tz = ... 
    return adjusted_tz 

register.filter('add_timezone', add_timezone) 
+0

謝謝,似乎足夠的解決方案,但是這是一個問題。如果有多個這樣的對象,我將不得不使用'with'標籤 – Sachin

+0

您當然可以修改模板中的值,您只需爲此編寫一個自定義模板標籤即可。 –

+0

@brunodesthuilliers然後你會修改它的模板... – Tisho