django-Ratelimit es una aplicación Django que proporciona un decorador para evaluar con límite vistas & nbsp; La limitación puede ser basada en la dirección IP o un campo en la solicitud - ya sea un GET o variable POST..
Si se superaron el límite de velocidad, ya sea un 403 Forbidden se pueden enviar, o la solicitud se pueden anotar con un atributo limitado, que le permite tomar otra acción como la adición de un código de imagen a un formulario.
Uso de Django Ratelimit
desde ratelimit.decorators Ratelimit importación es la cosa más grande que tiene que hacer. El decoradorratelimit ofrece varios argumentos opcionales con parámetros por defecto (en cursiva).
ip: Ya sea para evaluar límite basado en la IP. Verdadero
bloque: Ya sea para bloquear la solicitud en lugar de anotar. Falso
Método: ¿Qué método (s) de HTTP para evaluar límite. Puede ser una cadena o una lista. todos
campo: ¿Qué campo (s) de HTTP a utilizar para la tasa límite. Puede ser una cadena o una lista. ninguno
tasa: El número de solicitudes por unidad de tiempo permitidos. 5 / m
Ejemplos:
ratelimit ()
myview def (petición):
& Nbsp; # Será cierto si la misma IP hace más de 5 peticiones / minuto.
& Nbsp; was_limited = getattr (solicitud, "limitado", False)
& Nbsp; return HttpResponse ()
ratelimit (bloque = True)
myview def (petición):
& Nbsp; # Si la misma IP hace> 5 reqs / min, volverá HttpResponseForbidden
& Nbsp; return HttpResponse ()
ratelimit (campo = 'nombre de usuario')
def login (petición):
& Nbsp; # Si el mismo nombre de usuario o se utiliza IP> 5 veces / min, esto será cierto.
& Nbsp; # El valor `username` vendrá de GET o POST, determinado por el
& Nbsp; # método de solicitud.
& Nbsp; was_limited = getattr (solicitud, "limitado", False)
& Nbsp; return HttpResponse ()
ratelimit (method = "post")
def login (petición):
& Nbsp; # Sólo se aplica la tasa de limitación de puestos.
& Nbsp; volver HttpResponseRedirect ()
ratelimit (campo = ['nombre de usuario', 'other_field'])
def login (petición):
& nbsp; los valores de campos múltiples # Uso.
& Nbsp; return HttpResponse ()
ratelimit (tasa = '4 / h')
def lento (petición):
& Nbsp; # Permita 4 reqs / hora.
& Nbsp; return HttpResponse ()
Requisitos
- Python
- Django
Comentarios que no se encuentran