2012-05-09 18 views
0

withタグの最大の目的の1つは、テンプレートに「複雑な変数名をキャッシュする」ことです。Djangoのテンプレートタグ "with"を使うのは良い考えですか?

しかし、いつ使用するのがよいでしょうか?

私は私が今までと同じテンプレート変数を使用してcount()all()filter()、またはget()でデータベースをヒットした場合、その後、私はwithを使用する必要がありますと仮定しています。

しかし、user.usernameのような簡単なフィールド検索はどうですか?特定のテンプレートでは、私はuser.usernameを何度も呼び出しています。

withuser.usernameに使用する必要がありますか、または辞書を介してビューから単純な文字列を渡す必要がありますか?

答えて

1

user.usernamewithを使用する唯一の理由は、毎回長い名前を入力したくない場合です。そのルックアップにはほとんどオーバーヘッドがありません。したがって、キャッシュするためのポイントはありません。

user.userprofile.nameのような順方向の外部キーと一対一の関係でも、最初にORMによってキャッシュされるため、withを使用している点はほとんどありません。

+0

本当に外部キーを転送しますか?だから '{%blog.comments.all%}'のようなことはキャッシュされますか?ドキュメント例が '{%business.employees.count%} 'をキャッシュすると言っているのはなぜですか?それは前方の外部キーでもないのでしょうか? – hobbes3

+1

いいえ、それらは逆の外部キーまたは多対多の両方です。フォワードFKは、 'comment.blog.title'または' employee.business.name'です。 –

+0

したがって、M2Mも決してキャッシュされませんか? – hobbes3

関連する問題