
前の記事では、ブログにタグを作成して表示する機能を追加しました。
次に、タグ機能の残りの部分、つまりタグで投稿をフィルタリングする機能を完成させます。
ユーザーがタグリンクをクリックすると、その特定のタグの下にある投稿のみを表示する新しいページに移動します。これを行うには、バックエンドに新しいルートと処理ロジック、およびフロントエンドに対応するビューを作成する必要があります。
ステップ 1: サービスロジックの拡張
まず、tags_service.py に2つの新しいメソッドを追加する必要があります。1つはタグIDでタグを検索するため (その名前を取得するため)、もう1つはタグIDで関連するすべての投稿を検索するためです。
tags_service.py ファイルを開き、次のコンテンツを追加します。
コードの説明:
get_tag_by_id: プライマリキーでタグオブジェクトを取得するためのシンプルなヘルパー関数です。get_posts_by_tag_id: これはコアとなるクエリロジックです。SQLModel のselectおよびjoinメソッドを使用して、PostTagLink関連テーブルを介して指定されたtag_idに関連付けられたすべてのPostオブジェクトをフィルタリングし、作成時間で降順に並べ替えます。
ステップ 2: タグルートの作成
次に、/tags/{tag_id} リクエストを処理するルートを実装しましょう。
まず、routers フォルダ内に tags.py という名前の新しいファイルを作成します。
最後に、この新しいルーターモジュールを main.py に含めることを忘れないでください。
ステップ 3: フロントエンドビューの作成
最後のステップは、templates フォルダに posts-by-tag.html ビューファイルを作成することです。このファイルは、タグでフィルタリングされた投稿リストを表示するために使用され、その内容は index.html と非常によく似ています。
templates/posts-by-tag.html ファイルを作成します。
このテンプレートは、動的にタイトル (例: "Posts in Tag: Python") とそのタグの下の投稿リストを表示します。タグの下に投稿がない場合は、対応するメッセージが表示されます。
実行とテスト
アプリケーションを再起動します。
ブラウザを開き、タグが付いた投稿に移動してから、投稿の下にあるいずれかのタグリンクをクリックします。
対応するタグのフィルターページにリダイレクトされ、そのタグの下にあるすべての投稿のリストが表示されます。
これらの2つのチュートリアルにより、ブログに完全なタグ付けシステムが追加されました。
この時点で、FastAPIブログプロジェクトは、基本的なインフラストラクチャからコア機能、コンテンツ編成、データ分析まですべてをカバーしています。
ブログ機能の可能性は無限です。現在のフレームワークに基づいて、さらに機能を追加し続けることができます。残りはあなたの想像力次第です!
Leapcell にデプロイすることを忘れないでください。FastAPIサポート、PostgreSQLデータベース、Redis、Web分析、およびWebアプリケーションの構築に必要なすべてのツールを提供しています。
Xでフォローする:@LeapcellJapanHQ
関連記事:
