1

名前クラスID、最初と最後の属性

私のview.pyでは、データベースから名前オブジェクトをフェッチし、それをindex.htmlテンプレートに渡します。

私の中には、値と引数をとるtemplagetags/my_tags.pyフィルターがあります。my_private_tag(value, arg)argを値に追加し、結果を返します。

def my_private_tag(value, arg):
  return value + ' ' + arg

index.htmlタグで、次のことを行う必要があります。

{% if name %}

  # to display 
  # John says hello
  {{name.first | my_private_tag:"says hello"}

  # Johns student id = id_value
  {{name.first | my_private_tag:"????????"}

  # Johns student id = id_value, lastname = lastname_value
  {{name.first | my_private_tag:"????????"}

{% endif %}

どこ:

id_value = name.id & lastname_value = name.last

????????に記入してください できれば。

4

3 に答える 3

8

このために独自のフィルターを実装する代わりに。このようにしてみませんか:

{{name.first }} says hello
{{name.first }}'s student id = {{ name.id }}

それははるかに読みやすいです。そして、これはとにかくテンプレートを使用することになっている方法です。

それでもこのためにカスタムフィルターを使用したい場合は、おそらく次のような変数を渡すことができます。

{{name.first|my_private_tag:name.id}}
于 2009-05-23T00:47:06.390 に答える
0

フィルタが2つの文字列しか取得しない場合、元の名前オブジェクトにアクセスできないため、IDを取得する方法はありません。

既存のタグを使用して目的の結果を得ることができるときに、フィルターを使用してこれを実行したいというのは、間違った方向に向かっていると思います。しかし、議論のために、あなたが得ることができるとしましょう

Johns student id = 47, lastname = Doe

フィルターから。どうしますか?まず、名前オブジェクトをフィルターに渡す必要があります

{{name|my_private_tag:"??????"}}

フィルタのコードは次のようになります

return name.first_name + "s student id = " + name.id + ", lastname = " + name.last_name

引数を使用していないことに注意してください。フィルタが引数に応じて異なるものを返すようにしたい場合は、条件付きロジックを追加してください。

于 2009-05-23T05:06:20.033 に答える