simple_tagの使用
simple_tagを使用して、次のように設定しtakes_context=True
ます。
@register.simple_tag(takes_context=True)
def current_time(context, format_string):
timezone = context['timezone']
return your_get_current_time_method(timezone, format_string)
カスタムテンプレートタグの使用
template.Variable.resolve()を使用するだけです。
foo = template.Variable('some_var').resolve(context)
テンプレートタグへの変数の受け渡しを参照してください。
Variableクラスを使用するには、解決する変数の名前でインスタンス化してから、variable.resolve(context)を呼び出します。したがって、たとえば:
class FormatTimeNode(template.Node):
def __init__(self, date_to_be_formatted, format_string):
self.date_to_be_formatted = template.Variable(date_to_be_formatted)
self.format_string = format_string
def render(self, context):
try:
actual_date = self.date_to_be_formatted.resolve(context)
return actual_date.strftime(self.format_string)
except template.VariableDoesNotExist:
return ''
変数解決は、ページの現在のコンテキストで渡された文字列を解決できない場合、VariableDoesNotExist例外をスローします。
コンテキストで変数を設定することも役立つかもしれません。