FastAPIで完璧なブログを構築:訪問者分析

要約
このチュートリアルでは、FastAPIブログのバックエンドビューカウンターの構築方法を説明します。データベースモデルの作成、トラッキングサービスの実装、投稿ビュー数の表示について説明します。
意見はこのエリアに表示されます

以前の記事で、ブログに全文検索機能を統合し、素晴らしいコンテンツを見つけやすくしました。

これで、ブログの機能が豊富になり、コンテンツが増えるにつれて、読者にとって最も人気のある記事はどれかという新しい疑問が自然に生じます。

読者の興味を理解することは、より質の高いコンテンツを作成するのに役立ちます。

そのため、このチュートリアルでは、ブログに基本的でありながら非常に重要な機能、訪問者トラッキングを追加します。各記事が読まれた回数を記録し、ページにビュー数を表示します。

Google Analyticsのようなサードパーティサービスの使用を検討できます。しかし、バックエンド駆動のトラッキングシステムを自分で構築することで、より多くのデータを自分たちの手に置き、収集したいデータをカスタマイズできます。

始めましょう。

ステップ1:ページビューのデータモデルを作成する

1. データベーステーブルの作成

このテーブルは、各ビューの時間、対応する投稿、および将来の詳細分析のための訪問者情報(IPアドレスやUser Agentなど)を記録します。以下のSQLステートメントをPostgreSQLデータベースで実行して、pageviewテーブルを作成します。

注意ON DELETE CASCADEは、投稿が削除されたときに、関連するすべてのページビューレコードも自動的にクリアされることを保証します。

Leapcellでデータベースが作成されている場合、

画像の説明を入れてください
キャプションをここに記入

グラフィカルインターフェイスを使用してSQLステートメントを簡単に実行できます。ウェブサイトのデータベース管理ページに移動し、上記のステートメントをSQLインターフェイスに貼り付けて実行するだけです。

画像の説明を入れてください
キャプションをここに記入

2. PageViewエンティティの作成

次に、models.pyファイルを開き、PageViewモデルを追加し、双方向の関係を確立するためにPostモデルを更新します。

main.pycreate_db_and_tables関数を構成したため、SQLModelはモデルの変更を自動的に検出し、アプリケーション起動時にデータベーステーブル構造を更新します。そのため、SQLを手動で実行する必要はありません。

ステップ2:トラッキングサービスの K実装

コードをきれいに保つために、ページビューのトラッキング機能用の新しいサービスファイルを作成します。

ページビューに関連するすべてのロジックを処理するために、プロジェクトのルートディレクトリに新しいファイル tracking_service.py を作成します。

get_counts_by_post_idsメソッドは、SQLModel(SQLAlchemy)のfunc.countgroup_byを使用して、効率的なGROUP BYクエリを実行します。これは、特にホームページで複数の記事のビュー数を表示する必要がある場合、各投稿に対して個別のcountクエリを実行するよりもはるかに高速です。

ステップ3:記事ページでのビュー記録の統合

次に、訪問者が投稿を表示するたびにtracking_servicerecord_viewメソッドを呼び出す必要があります。これに最も適した場所は、routers/posts.pyget_post_by_idルートです。

routers/posts.pyを開き、新しいサービスをインポートして呼び出します。

ステップ4:フロントエンドでのビュー数の表示

記事詳細ページ

前のステップで、view_countを取得し、post.htmlテンプレートに渡しました。あとはテンプレートに表示するだけです。

templates/post.htmlを開き、投稿のメタ情報エリアにビュー数を追加します。

ブログホームページ

ホームページの投稿リストにもビュー数を表示するには、get_all_postsルートにいくつかの調整を加える必要があります。

routers/posts.pyを更新:

最後に、templates/index.htmlテンプレートを更新してビュー数を表示します。

実行とテスト

アプリケーションを再起動します。

ブラウザを開き、ブログのホームページに移動します。

ブログリストで、各投稿の横に「Views: 0」が表示されます。

画像の説明を入れてください
キャプションをここに記入

詳細ページに入る記事をクリックしてページを数回更新します。この記事のビュー数がそれに応じて増加していることに気づくでしょう。

画像の説明を入れてください
キャプションをここに記入

結論

これで、FastAPIブログにバックエンドビューカウントトラッキングシステムを正常に追加しました。ユーザー訪問データは、これであなたの手元にあります。

この生データを使用して、より詳細なデータ操作と分析を実行できます。たとえば:

  • 重複排除:特定の時間枠(例:1日)内の同じIPアドレスからの複数の訪問を1回のビューとしてカウントします。
  • ボットのフィルタリングUser-Agentを分析して、検索エンジンのクローラーからの訪問を識別し、除外します。
  • データダッシュボード:チャートを使用して記事のビュー傾向を視覚化するプライベートページを作成します。

データはあなたの手元にあるので、これらの探索はあなたに委ねます。

ブログがLeapcellにデプロイされている場合、LeapcellはすでにWeb Analytics機能を無料で自動的に有効にしています。

LeapcellのWeb Analyticsには、多くの便利で強力な訪問者分析機能が含まれています。それを使用すると、自分で開発する大変な作業なしに、訪問者の行動の基本的な分析を簡単に実行できます。

画像の説明を入れてください
キャプションをここに記入

Xでフォローする:@LeapcellJP


ブログでこの記事を読む

関連記事:

Explore More
関連記事はありません。