2016-06-23 6 views
0

私はDjango 1.9とDjango Rest Frameworkを使用しています。Djangoでは、テンプレートの外にテンプレートタグをインポートして使用するのは悪いですか?

Djangoにはtimesince()という名前のメソッドがあり、humanizeというtemplatetagで 'naturaltime'というメソッドで使用されています。

ナチュラルタイムメソッドは、私が望むもの(かなりフォーマットされた日付)を返します。 Timesinceはアプリで使えるものではありません。

とにかく、私はDRFのためserializer.pyファイル内だし、私はその方法をインポート:

from django.contrib.humanize.templatetags.humanize import naturaltime 

方法との上部にregister.filter @注釈がありますので、 template = template.Library()をtemplatetagファイルの先頭に配置すると、テンプレートからインポートしたときに問題が発生する可能性がありますか?

答えて

0

いいえ問題はありません。

この関数は、通常のPython関数として使用できます。 @register.filterは、の機能をfilterとデコレートするデコレータであり、register = template.Library()はテンプレートタグとして使用可能です。

ただし、プレーンなPythonコードで正しい署名を使用して呼び出すこともできます。

だからあなたが行うことができます。

from django.contrib.humanize.templatetags.humanize import naturaltime 
from datetime import datetime as dt 

my_human_time = naturaltime(dt.now()) 
print(my_human_time) 
# 'now' 
関連する問題