2011-02-08 3 views
6

私は年をDjangoのblocktransに追加したいと思っています - 以下の構文を使います。django blocktransで 'now'を使用しますか?

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

これは明らかに動作するはずですが、私はどちらかの仕事を得ることができない、この既存のDjangoのチケット(http://code.djangoproject.com/ticket/3088)に似ています。

どちらの場合でも、タグは単純に展開されませんが、残りのブロックトランスはうまく描画されます。

答えて

10

唯一の方法は、Pythonであなたの日付を取得し、ライナーが提案しているとして、日付フィルタを使用するか、または独自のtemplatetagを定義することです。 コンテクストで日付を設定するためのコンテキストプロセッサを作成できます。

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 %} 

は、あなたの意見

にcontext_instanceようRequestContextのを渡すことを忘れないでください

Hereがその例です。あなたが行うことができるはずので

+1

こんにちはMiga、私は最高の答えとしてこれをマークしましたが、あなたのブログの完全な例を含めるために上記の答えを広げることができますか?ありがとう。 – mikemaccana

+0

それは今より良いはずです。 – miga

1

nowタグは、渡されたフォーマットに一致する文字列としてフォーマットされた日付を返します。 dateにはおそらくdatetime/dateオブジェクトが必要です。これらを一緒に連鎖させることはできません。

with文でnowタグを使用できるかどうかはわかりませんが、これを試してください。

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

nowdateと同じ形式の文字列を受け付けます。これがうまくいかない場合は、datetime.datetime.now()の結果をテンプレートに渡し、nowの代わりにそのテンプレートを使用することをお勧めします。

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

おかげライナー! 1. 'with now "Y" as copydate "は適切な構文ではありません。テンプレートフィルタが必要です。 2.動作しますが、すべてのテンプレートに明示的に日付を渡しません。 3. 'blocktrans'は内部に他のブロックタグを許可しないため、動作しません。 もう一度お返事ありがとうございます。 – mikemaccana

+0

@nailerありがとう、私はその提案を削除しました。万が一もう片方を試しましたか? –

+0

Reiner:うん、他の提案について上記のコメントを更新しました。 – mikemaccana

関連する問題