いくつかの動的コンテンツを取得し、標準テンプレートを使用してレンダリングする CMS があります。ただし、動的コンテンツ自体でテンプレート タグを使用しているため、render_to_string を実行し、その結果をコンテキスト変数として render_to_response に渡す必要があります。これは無駄に思えます。
これを行うためのより良い方法は何ですか?
いくつかの動的コンテンツを取得し、標準テンプレートを使用してレンダリングする CMS があります。ただし、動的コンテンツ自体でテンプレート タグを使用しているため、render_to_string を実行し、その結果をコンテキスト変数として render_to_response に渡す必要があります。これは無駄に思えます。
これを行うためのより良い方法は何ですか?
「これはもったいない」なぜそう見えるのか?
すべてのテンプレートは、タグとテキストの組み合わせです。あなたの場合、テキストの一部のブロックがテンプレート エンジンによって既にアクセスされています。だから何?変換されると、それはただのテキストになり、次のテンプレート エンジンを非常に迅速に通過します。
特定のパフォーマンスの問題がありますか? トランザクションのスループット要件を満たしていませんか? 特定の問題はありますか?
コードが複雑すぎませんか? 維持するのは難しいですか?それはいつも壊れますか?
あなたの解決策は適切だと思います。動的コンテンツのテンプレート タグがデバッグの観点からは良いかどうかはわかりませんが、基本的な「テンプレート レンダリング」の観点からは問題ありません。
あなたがしていることは問題ないように聞こえますが、質問される可能性があります。手動でレンダリングするのではなく、テンプレートタグ参照をテンプレートに直接配置してみませんか?
<div>
{% if object matches some criteria %}
{% render_type1_object object %}
{% else %}
{% render_type2_object object %}
{% endif %
... etc ...
</div>
または、さらに良いことに、オブジェクト(またはオブジェクトのリスト)をレンダリングするための1つの中央テンプレートタグがあります。これは、オブジェクトタイプのテンプレートタグへのマッピングをカプセル化します。次に、すべてのテンプレートが1つのtemplatetagを参照するだけで、テンプレート自体に型の知識は必要ありません。
重要なのは、ビューから個々のオブジェクトをレンダリングする方法に関する知識を移動することです。