2011-02-08 67 views
6

我想將一年添加到Django的blocktrans中 - 使用下面的語法。在django blocktrans中使用'now'?

{% blocktrans with now|date:"Y" as copydate %} 
    © {{ copydate }} Company 
{% endblocktrans %} 

這是類似於此的Django現有門票(http://code.djangoproject.com/ticket/3088),這顯然應該現在的工作,但我不能去工作的。

在這兩種情況下,標籤根本就沒有擴大,但blocktrans其餘渲染罰款。

回答

10

唯一的方法是讓你的日期在Python中,並使用日期過濾器作爲賴納建議或定義自己的模板標籤。 您可以創建一個上下文處理器來在您的上下文中設置日期。

def my_date(request): 
  import datetime 
  return {'my_date':datetime.datetime.now()} 

和settings.py中添加此

TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
     'the_package_of_my_tiny_function.my_date', 
    ) 

用它在你的模板是這樣的:

{% blocktrans with my_date|date:"Y" as copydate %} 
     © {{ copydate }} Company 
    {% endblocktrans %} 

不要忘記通過的RequestContext爲context_instance在你的意見

Here就是這個例子。

1

now標籤返回格式化的日期字符串匹配傳遞的格式。 date可能需要一個datetime/date對象。因此將這些鏈接在一起將不起作用。

我甚至不知道你是否可以在使用now標籤與聲明,但試試這個。

{% blocktrans with now "Y" as copydate %} 

now接受相同的格式字符串作爲date。如果這不起作用,我最好的辦法是通過模板datetime.datetime.now()結果,並使用該模板而不是now

{% blocktrans with my_date|date:"Y" as copydate %} 
+0

感謝雷納! 1.「與現在的‘Y’爲copydate」不正確的語法,看來你需要一個模板過濾器。 2.會工作,但我寧願不明確地通過每個模板的日期。 3.不會爲'blocktrans的工作不允許在它裏面的其他塊標籤。 再次感謝您的回覆。 – mikemaccana 2011-02-08 11:14:54

+0

@nailer啊謝謝你,我刪除了這個建議。你有沒有嘗試過其他的機會? – 2011-02-08 11:16:41