テンプレート タグに 3 つ以上のパラメーターを指定する方法はありますか?
できます:
val1|my_function:val2
しかし、val3 はどこに行くのでしょうか?
私は試した
val1|my_function:val2,val3
編集: val1、val2、val3 は動的です。つまり、{{val2}} のようにアクセスできます。
テンプレート タグに 3 つ以上のパラメーターを指定する方法はありますか?
できます:
val1|my_function:val2
しかし、val3 はどこに行くのでしょうか?
私は試した
val1|my_function:val2,val3
編集: val1、val2、val3 は動的です。つまり、{{val2}} のようにアクセスできます。
templatetag は引数を 1 つだけ受け入れます。
これを回避するにはいくつかの方法がありますが、それが価値があるかどうか、またはロジックを変更できるかどうかを検討します。
引数は数字または文字列である必要があります。
したがって、これは機能しません:
val1|func:['a','b']
val1[func:{'a':'b'}
val1|func:('a','b')
これはうまくいきます:
val1|func:10
val1|func:10.2
val1|func:"10"
できることは、構造化された方法でフォーマットされた文字列を送信することです。
val1|func:"['a','b']"
そして、これを解析するために必要なデータ型を作成できますが、これは非常に醜い解決策になります。
よりクリーンなソリューションは、複数のタグを使用することです。
val1|func:'a'|func:'b'
これがフィルターであり、フィルターは 1 つまたは 2 つの引数しか取ることができません。カスタム テンプレート フィルターの作成。複数の引数を取ることができるタグが必要な場合は、カスタム テンプレート タグの記述 を確認してください。
文字列の場合、次のことができます。
val1|my_function:"val2,val3"
そして分割します:
@register.filter()
def my_funtion(val1, args):
args = [x.strip() for x in args.split(',')]
#do something
return value