Страница Django RateLimit 403 не заменяется

Я настроил django-ratelimit в своем проекте, и он работает нормально, за исключением того, что я не могу удалить некрасивую страницу с ошибкой 403, когда посетитель достигает своего предела. Я пытаюсь заменить его, как говорится в их документах, которые гласят:

Существует дополнительное промежуточное программное обеспечение для использования настраиваемого представления для обработки исключений Ratelimited. Чтобы использовать его, добавьте ratelimit.middleware.RatelimitMiddleware к вашему MIDDLEWARE_CLASSES (к нижней части списка) и установите RATELIMIT_VIEW для полного пути представления, которое вы хотите использовать.

Представление, указанное в RATELIMIT_VIEW, получит два аргумента: объект запроса (после обработки с ограничением скорости) и исключение.

Вот что у меня в коде:

НАСТРОЙКИ:

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)

Что я делаю неправильно?

1 ответ

Решение

Я не уверен, помогает ли это, но я пытаюсь исправить beeLimited вид исправить

def beenLimited(request, exception):
    message = "A few too many tries for today buddy. Please try again tomorrow."
    return HttpResponse(message)

Другой подход - проверка request.limited приписывать pullFromDatabase Посмотреть. Это потребует установить block=True,

Другие вопросы по тегам