2015-10-17 40 views
1

此問題與this one類似,但截然不同,在我看來。Django templatetags ISO至今

我有一個對象具有一些日期時間屬性。爲了序列化並存儲爲JSON字符串,我調用了.isoformat方法(使用定製的JSON編碼器)。

相反,我期望Django模板標籤能夠爲我解決這個問題。我有一個JSON對象,我通過調用json.loads將其轉換爲字典。當我簡單地稱其爲{{ my_object.date }}時,生成的屬性的值爲2015-10-07T14:57:00.501597+00:00。但是,當我將它傳遞給date模板標記時,我根本沒有輸出。我正在嘗試{{ my_object.date | date }},但也像{{ my_object.date | date:'Y-m-d' }}

日期不能轉換這些值嗎?我清楚地記得在某個時候做這個,但不知道具體情況。

有沒有一種方法可以正確調試它?現在,我只是沒有看到任何輸出,也沒有出現在日誌中。

+0

確保'my_object'在模板上下文中可用。 '{{my_object}}'的結果是什麼? – danielcorreia

+0

打印整個字典。更重要的是,正如我上面提到的,'{{my_object.date}}'打印'2015-10-07T14:57:00.501597 + 00:00',確認密鑰是正確的。 – Joost

+0

看起來這是一個字符串。日期過濾器對日期時間對象起作用。 –

回答

2

爲什麼不在將模型傳遞給模板之前將其轉換爲日期時間實例?然後,您可以使用模板中的date過濾器輸出任何您想要的內容。如果您沒有/不能這樣做,您必須編寫一個自定義過濾器標籤來讀取isoformat日期並以您想要的方式輸出。

實施例使用dateutil library

from django import template 
import dateutil 

register = template.Library() 

@register.filter(name='to_date') 
def to_date(value): 
    return dateutil.parser.parse(value) 

文檔爲custom filter tags

+0

嗯..看起來你是對的,這是正確的方法。我很驚訝'datetime.isoformat'在標準庫中,但是沒有辦法轉換回'datetime'。 – Joost

+0

是的,也許有一天dateutil可以移動到標準庫中,這很酷。請接受答案。 – danielcorreia