1

ユーザーが作成したリストを含む Python/Flask/Jinja2 を使用して Web サイトを構築しています。すべてのリストには有効期限があるため、すべてのリストは有効であるか有効期限が切れています。

各リストには、 に独自のページがありますmysite.com/listings/<listing_id>。期限切れのリスティング ページは、アクティブなリスティング ページとは異なって見えます。違いは多いかもしれませんが、ページの高レベル構造は同じです (結局のところ、どちらも同じ Web サイトのリストです)。

テンプレートとロジックを構成する最良の方法は何ですか? 2 つのオプションが表示されます。

まず、2 つの Jinja2 テンプレートを作成できます:listing.htmllisting_expired.html. ビュー機能は、リストがアクティブか期限切れかを判断し、適切なテンプレートをレンダリングします。欠点は、2 つのテンプレートを同期させる必要があることです。

または、テンプレートを 1 つだけ持つこともできます: listing.html. テンプレートには、リストの有効期限が切れているかどうかをテストするためのロジックが含まれます。テンプレートの一部は、有効期限が切れている場合に使用され、有効期限が切れていない場合は別の部分が使用されます (bigif-elseステートメントを使用)。

これを構造化する正しい方法は何ですか?

4

2 に答える 2

1

これには、jinja テンプレートの継承を使用できます。一般化を使用して基本テンプレートを作成し、このテンプレートを 2 つの子テンプレート (リストと期限切れ) と子ブロックで拡張してビューを作成します。結論 : 大きな if-else のない 3 つのテンプレート。

于 2013-01-20T02:58:44.737 に答える
0

最善の方法は、2 つの異なるテンプレートを用意し、両方で高レベルの構造を継承することだと思います。

于 2013-01-19T22:10:57.913 に答える