Django-ratelimit is een Django app die een decorateur biedt om van gedachten-limiet waardeert & nbsp; Het beperken kan worden gebaseerd op IP-adres of een veld in de aanvraag - ofwel een GET of POST variabele..
Als de snelheid limiet wordt overtrof, ofwel een 403 verboden kan worden verzonden, of het verzoek kan worden geannoteerd met een beperkte attribuut, zodat u een andere actie te ondernemen, zoals het toevoegen van een captcha op een formulier.
Met behulp van Django Ratelimit
van ratelimit.decorators import ratelimit is het grootste wat je hoeft te doen. Deratelimit decorateur biedt een aantal optionele argumenten met zinvolle defaults (cursief).
ip: Of het nu gaat om op basis van het IP-limiet te geven. Waar
block: Of het nu gaat om het verzoek in plaats van annoteren blokkeren. Vals
methode: Welke HTTP methode (s) om te beoordelen-limiet. Kan een string of een lijst zijn. alle
gebied: Welke HTTP veld (en) te gebruiken om te beoordelen-limiet. Kan een string of een lijst zijn. geen
rate: Het aantal verzoeken per tijdseenheid toegestaan. 5 / m
Voorbeelden:
ratelimit ()
def MyView (aanvraag):
& Nbsp; # Zal waar zijn als hetzelfde IP maakt meer dan 5 aanvragen / minuut.
& Nbsp; was_limited = getattr (verzoek, 'beperkt', Valse)
& Nbsp; terugkeren HttpResponse ()
ratelimit (blok = True)
def MyView (aanvraag):
& Nbsp; # Als dezelfde IP maakt> 5 reqs / min, zal terugkeren HttpResponseForbidden
& Nbsp; terugkeren HttpResponse ()
ratelimit (veld = 'gebruikersnaam')
def login (aanvraag):
& Nbsp; # Als dezelfde gebruikersnaam OR IP wordt gebruikt> 5 keer / min, zal dit waar zijn.
& Nbsp; # Het `username` waarde zal komen van GET of POST, wordt bepaald door de
& Nbsp; # verzoek methode.
& Nbsp; was_limited = getattr (verzoek, 'beperkt', Valse)
& Nbsp; terugkeren HttpResponse ()
ratelimit (method = "POST")
def login (aanvraag):
& Nbsp; # gelden alleen snelheidsbeperkende te berichten.
& Nbsp; terugkeren HttpResponseRedirect ()
ratelimit (veld = ['gebruikersnaam', 'other_field'])
def login (aanvraag):
& Nbsp; # Met meerdere veldwaarden.
& Nbsp; terugkeren HttpResponse ()
ratelimit (rate = '4 / h)
def langzame (aanvraag):
& Nbsp; # Sta 4 reqs / uur.
& Nbsp; terugkeren HttpResponse ()
Eisen
- Python
- Django
Reacties niet gevonden