django-ratelimit är en Django app som ger en dekoratör att betygsätta-limit utsikt & nbsp; begränsa kan baseras på IP-adress eller ett fält i begäran - antingen en GET eller POST variabel..
Om hastighetsgränsen är exceded, antingen en 403 Forbidden kan sändas, eller begäran kan kommenteras med en begränsad attribut, så att du kan ta en annan åtgärd som att lägga en captcha till ett formulär.
Använda Django Ratelimit
från ratelimit.decorators import ratelimit är den största sak du behöver göra. Denratelimit dekoratör ger flera valfria argument med förnuftiga standardinställningar (i kursiv stil).
ip: Om att betygsätta-limit baserad på IP. Sann
block: om du vill blockera begäran i stället för textning. Falsk
metod: Vilken HTTP-metoden (s) för att betygsätta-gräns. Kan vara en sträng eller en lista. allt
fält: Vilken HTTP fältet (s) ska användas för att hastighetsgränsen. Kan vara en sträng eller en lista. ingen
Hastighet: Antalet förfrågningar per tidsenhet tillåtna. 5 / m
Exempel:
ratelimit ()
def myview (begäran):
& Nbsp; # Kommer att vara sant om samma IP gör mer än fem förfrågningar / minut.
& Nbsp; was_limited = getattr (begäran, "begränsad", False)
& Nbsp; tillbaka HttpResponse ()
ratelimit (block = sant)
def myview (begäran):
& Nbsp; # Om samma IP gör> 5 reqs / min, kommer att återvända HttpResponseForbidden
& Nbsp; tillbaka HttpResponse ()
ratelimit (fält = "username)
def inloggning (begäran):
& Nbsp; # Om samma användarnamn eller IP används> 5 gånger / min, kommer detta att vara sant.
& Nbsp; # Det `username` värdet kommer från GET eller POST, som bestäms av
& Nbsp; # förfrågningsmetoden.
& Nbsp; was_limited = getattr (begäran, "begränsad", False)
& Nbsp; tillbaka HttpResponse ()
ratelimit (method = "POST)
def inloggning (begäran):
& Nbsp; # endast gälla hastighetsbegränsande till inlägg.
& Nbsp; tillbaka HttpResponseRedirect ()
ratelimit (fält = ['username', 'other_field'])
def inloggning (begäran):
& nbsp; # Använd flera fältvärden.
& Nbsp; tillbaka HttpResponse ()
ratelimit (ränta = '4 / h)
def långsam (begäran):
& Nbsp; # Tillåt 4 reqs / timme.
& Nbsp; tillbaka HttpResponse ()
Krav :
- Python
- Django
Kommentarer hittades inte