首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django RateLimit 403页未被替换

Django RateLimit 403页未被替换
EN

Stack Overflow用户
提问于 2013-04-20 18:36:07
回答 1查看 892关注 0票数 2

我已经在我的项目上设置了django-棘轮分隔,它看起来很好,只是当访问者达到他们的极限时,我无法删除丑陋的403错误页面。正如他们在他们的文档中所说的那样,我正在尝试替换它,其内容如下:

有可选的中间件来使用自定义视图来处理数据排除异常。要使用它,请将ratelimit.middleware.RatelimitMiddleware添加到MIDDLEWARE_CLASSES中(在列表底部),并将RATELIMIT_VIEW设置为要使用的视图的完整路径。 RATELIMIT_VIEW中指定的视图将获得两个参数,即请求对象(在棘轮排除处理之后)和异常。

下面是我的代码:

设置:

代码语言:javascript
复制
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',
    },
}

意见:

代码语言:javascript
复制
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)

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-20 19:08:49

我不确定这是否有帮助,但尝试修复beeLimited视图以更正

代码语言:javascript
复制
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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16123825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档