2

カスタムテンプレートタグを作成していますが、任意の値で渡すことができるようにしたいと考えています。ユースケースは次のようなものです。

{% include_with_args "path_to_template.html" simple_var an_object.foo.bar "A String" %}

カスタムテンプレートコードを評価するときは、Djangoが通常行うのと同じ方法で、、、simple_varおよびan_object.foo.barを評価したいと思います。"A String"現在私は持っています

these_args = [context[arg_name] for arg_name in self.arg_names]

ただし、これは変数名(simple_var)に対してのみ機能します。

Djangoと同じように、テンプレートでこれらの文字列を評価するにはどうすればよいですか?つまり.foo、キーを含むdictを返す関数の場合"bar"、期待どおりに評価する必要がありますan_object.foo()["bar"]

簡単に言うと、式を値に評価したいと思います。カスタムテンプレートからそれを行うにはどうすればよいですか?

4

2 に答える 2

3

実はとてもシンプルです。それ以外の:

these_args = [context[arg_name] for arg_name in self.arg_names]

行う:

these_args = [template.Variable(arg_name).resolve(context) for arg_name in self.arg_names]

もちろん、今arg_nameは誤称なので、私はそれを変更しましたが、違いを解明するためにこのように書いただけです。

于 2012-08-03T02:08:35.953 に答える
0

包含タグはすでにあなたが望むことをします:https ://docs.djangoproject.com/en/1.4/howto/custom-template-tags/#inclusion-tags

少し違うことをしなければならないのは、an_object.foo.barが呼び出される場所を変更することだけです。テンプレートレイヤーのタグの引数でそれを行う代わりに、タグのPythonコードでそれを行います。

于 2012-08-03T01:44:24.050 に答える