0

Django アプリケーションで延滞料金を支払うユーザーに延滞料金を請求する必要があるかどうかを確認する機能があります。cron ジョブを作成できないため、ユーザーがアプリケーションにアクセスするたびにこの関数を実行する必要があります。

アプリケーションのすべてのビューの先頭でこの関数を呼び出すこともできますが、それでは関数名を何度も繰り返すことになります。

ユーザーが Django アプリケーションにアクセスするたびに関数を実行するにはどうすればよいですか? おそらくsettings.pyで関数を呼び出す必要がありますか?

4

1 に答える 1

2

独自のミドルウェアを作成し、設定のミドルウェアのリストに追加します。ミドルウェア自体は、リクエストの処理チェーンの特定のポイントへのフックとして機能するいくつかの関数を備えた単なるクラスです。

class MyMiddleware (request):

    process_request(self,request):
       # do something here before passing the request to the view

    process_response(self,request,response):
       # do something here before passing the response to the client

機能が開始する正確なポイントを指定するために使用できるフックは他にもいくつかあります。ドキュメントを参照して、自分のケースに最適なものを確認することをお勧めします。

設定で、ミドルウェアをミドルウェアクラスに追加するだけです。

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'your_app.middleware.MyMiddleware',

)。

それはまさにあなたが望むことをするはずです。

于 2012-04-21T21:10:12.283 に答える