ユーザーが作成したリストを含む Python/Flask/Jinja2 を使用して Web サイトを構築しています。すべてのリストには有効期限があるため、すべてのリストは有効であるか有効期限が切れています。
各リストには、 に独自のページがありますmysite.com/listings/<listing_id>
。期限切れのリスティング ページは、アクティブなリスティング ページとは異なって見えます。違いは多いかもしれませんが、ページの高レベル構造は同じです (結局のところ、どちらも同じ Web サイトのリストです)。
テンプレートとロジックを構成する最良の方法は何ですか? 2 つのオプションが表示されます。
まず、2 つの Jinja2 テンプレートを作成できます:listing.html
とlisting_expired.html
. ビュー機能は、リストがアクティブか期限切れかを判断し、適切なテンプレートをレンダリングします。欠点は、2 つのテンプレートを同期させる必要があることです。
または、テンプレートを 1 つだけ持つこともできます: listing.html
. テンプレートには、リストの有効期限が切れているかどうかをテストするためのロジックが含まれます。テンプレートの一部は、有効期限が切れている場合に使用され、有効期限が切れていない場合は別の部分が使用されます (bigif-else
ステートメントを使用)。
これを構造化する正しい方法は何ですか?