2015-09-16 38 views
0

我正在使用Django Ratelimit來限制我的視圖可以被IP調用的速率。請求速率限制器中的註釋是什麼

但我不知道參數block的含義是什麼,documented here

當我將它設置爲True時,當我的費率限制被超過時,我得到403。

但我不明白當它被設置爲False時會發生什麼。該文檔說:

block – False Whether to block the request instead of annotating. 

我的問題是:在這種情況下「註釋」是什麼意思。

+2

就我在文檔示例中看到的,有一個'was_limited = getattr(request,'limited',False)'示例。我相信將它設置爲False,不會阻止請求(在它指定的文檔中,'block = True'會引發異常,當block設置爲False時不會發生這種情況,您只能獲得'restricted'屬性在請求對象內。 – petkostas

回答

2

正如你所說,當block=True時,裝飾者引起Ratelimited異常。這會向用戶返回403權限拒絕響應。

如果block=False,不會引發異常。但是,請求對象上已設置布爾型limited。在您看來,您可以使用getattr來檢查此「註釋」,然後根據您的喜好進行處理。

was_limited = getattr(request, 'limited', False): 
if was_limited: 
    return HttpResponse("You have been rate limited") 

所以如果你使用block=False,它是由你來檢查值request.limited,並妥善處理。