2

Django を使用して REST Web サービスを作成しました。この Web サービスにはログ ファイルがあります。すべての Web サービス (http) リクエストをログ ファイルに記録したいと考えています。ただし、Web サービス要求の処理は Django によって行われます。URL 要求ハンドラーのマッピングをセットアップし、要求ハンドラー (Django 命名法のビュー) を作成するだけです。関連するリクエスト ハンドラ (ビュー) に各リクエストを記録する必要なく、すべてのリクエストを中央ポイントに記録する方法はありますか?

前もって感謝します。

4

1 に答える 1

2

はい、Djangoにはシグナルフレームワークが組み込まれています。

リクエストが開始するたびに呼び出される関数を登録できます。

このドキュメントページでは、手順を追って説明しています。

デコレータメソッドの使用:

from django.core.signals import request_started
from django.dispatch import receiver

@receiver(request_started)
def my_callback(sender, **kwargs):
    # log the request here
    pass

このコードはどこにあるべきですか?信号処理と登録コードはどこにでも置くことができます。ただし、信号を送信する前に信号処理が登録されるように、モジュールが含まれているモジュールが早い段階でインポートされていることを確認する必要があります。これにより、アプリのmodels.pyはシグナルハンドラーの登録を行うのに適した場所になります。

于 2013-02-22T17:14:50.827 に答える