プロジェクトに django-ratelimit をセットアップしましたが、訪問者が制限に達したときに醜い 403 エラー ページを削除できないことを除いて、正常に動作しているように見えます。彼らがドキュメントで言っているように、私はそれを置き換えようとしています。
カスタム ビューを使用して Ratelimited 例外を処理するオプションのミドルウェアがあります。これを使用するには、ratelimit.middleware.RatelimitMiddleware を MIDDLEWARE_CLASSES (リストの一番下) に追加し、RATELIMIT_VIEW を使用するビューのフル パスに設定します。
RATELIMIT_VIEW で指定されたビューは、リクエスト オブジェクト (レート制限処理後) と例外の 2 つの引数を取得します。
これが私のコードにあるものです:
設定:
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',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'ratelimit.middleware.RatelimitMiddleware',
)
RATELIMIT_VIEW = 'myapp.views.beenLimited'
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'myapp',
'ratelimit',
)
RATELIMIT_USE_CACHE = 'default'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'ratelimit-tests',
},
}
ビュー:
from ratelimit.decorators import ratelimit
@ratelimit(method='POST', block=True, rate='10/m')
def pullFromDatabase(request):
...
def beenLimited(request):
message = "A few too many tries for today buddy. Please try again tomorrow."
HttpResponse(message)
私は何を間違っていますか?