2011-08-04 11 views

答えて

2

タグはコンテキストを変更する方法を知っている場合を除きあなたは、(それらは通常xxx as variable構文利用可能な)ことはできません。そうでなければ、カスタムタグとしてラッパーを書くことができます。

+0

これでdjangoはテンプレート言語に "as"代入演算子を追加したので、今すぐ戻ることができます(バージョン1.9?)。下の私の答えを見てください。 – foobarbecue

0

これを行うための正しい方法は、独自のタグを記述することです:

あなたが書いたタグがwidthratioと同じロジックを行い

{%がB、CのDの%をwidthratio_add}、それに番号を追加します。

djangoは "add"を超えてテンプレートの基本的な数学を許可していないので、あなたがこれをやろうとしていると思われます。あなた自身のタグを書くときには、少ない引数:

{%のmymathtag広告%}

これを行う方法の一般的な説明のためにこれをチェックしてください:ここでDo math using Django template filter?

0

は私のカスタムテンプレートタグソリューションです:

from django import template 
from django.template.defaulttags import WidthRatioNode 

register = template.Library() 

class WidthRationExtraNode(WidthRatioNode): 
    def render(self, context): 
     extra = int(self.extra.resolve(context)) 
     value = int(super(WidthRationExtraNode, self).render(context)) 
     return str(value+extra) 
    def __init__(self, val_expr, max_expr, max_width, extra): 
     self.extra = extra 
     super(WidthRationExtraNode, self).__init__(val_expr, max_expr, max_width) 

def widthratioextra(parser, token): 
    bits = token.contents.split() 
    if len(bits) != 5: 
     raise TemplateSyntaxError("widthratio takes four arguments") 
    tag, this_value_expr, max_value_expr, max_width, extra = bits 

    return WidthRationExtraNode(parser.compile_filter(this_value_expr), 
          parser.compile_filter(max_value_expr), 
          parser.compile_filter(max_width), 
          parser.compile_filter(extra)) 
widthratioextra = register.tag(widthratioextra) 

あなたのテンプレートでそれを使用することができます:あなたはそれを行う方法がわからない場合は、アプリケーションにカスタムテンプレートタグを追加する

{% widthratioextra a b c d %} 

は、比較的容易であり、ここでのマニュアルの関連部分は次のとおりです。https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

0

「as」キーワードをそのまま使用してください:

{結果の%%} {結果| add:2}}

関連する問題