Django-ratelimit er et Django app, der giver en dekoratør til at bedømme-limit visninger & nbsp; Begrænsning kan være baseret på IP-adresse eller et felt i anmodningen - enten en GET eller POST variabel..
Hvis grænsen prisen er exceded, enten en 403 Forbidden kan sendes, eller anmodningen kan kommenteret med en begrænset attribut, så du kan tage en anden handling gerne tilføje en captcha til en formular.
Brug Django Ratelimit
fra ratelimit.decorators import ratelimit er den største ting, du skal gøre. Denratelimit dekoratør giver flere valgfrie argumenter med fornuftige standardindstillinger (i kursiv).
ip: Uanset at klassificere-limit baseret på IP. Sandt
blok: Uanset om at blokere anmodningen i stedet for udfyldelse. Falsk
metode: Hvilken HTTP metode (r) til bedøm-grænse. Kan være en streng eller en liste. alle
felt: Hvilken HTTP felt (er) at bruge til at rate-limit. Kan være en streng eller en liste. none
rate: Antallet af anmodninger pr tidsenhed tilladt. 5 / m
Eksempler:
ratelimit ()
def myview (anmodning):
& Nbsp; # Vil være tilfældet, hvis den samme IP gør mere end 5 anmodninger / minut.
& Nbsp; was_limited = getattr (anmodning "begrænset", False)
& Nbsp; returnere HttpResponse ()
ratelimit (blok = True)
def myview (anmodning):
& Nbsp; # Hvis den samme IP gør> 5 anmod / min, vil vende tilbage HttpResponseForbidden
& Nbsp; returnere HttpResponse ()
ratelimit (felt = 'brugernavn')
def login (anmodning):
& Nbsp; # Hvis samme brugernavn eller IP bruges> 5 gange / min, vil dette være sandt.
& Nbsp; # Den `username` værdi vil komme fra GET eller POST, bestemmes af
& Nbsp; # anmodning metode.
& Nbsp; was_limited = getattr (anmodning "begrænset", False)
& Nbsp; returnere HttpResponse ()
ratelimit (metode = 'POST')
def login (anmodning):
& Nbsp; # Kun anvende hastighedsbegrænsende til stillinger.
& Nbsp; returnere HttpResponseRedirect ()
ratelimit (felt = ['brugernavn', 'other_field'])
def login (anmodning):
& nbsp; # Brug multiple feltværdier.
& Nbsp; returnere HttpResponse ()
ratelimit (rate = '4 / h')
def langsom (anmodning):
& Nbsp; # Tillad 4 anmod / time.
& Nbsp; returnere HttpResponse ()
Krav :
- Python
- Django
Kommentarer ikke fundet