Как ограничить запрос на отправку формы в приложении Django
Я хочу ограничить отправку запроса для посетителей (анонимов) в моем приложении django.
Предположим, 10 или 50 лимитов в день/месяц. Если они пытаются искать больше, чем заданный лимит, я хочу показать сообщение "Вы достигли своего дневного или месячного лимита!"
Как я могу это сделать?
Вот мнения:
def homeview(request):
if request.method == "POST" and 'text1' in request.POST:
text1 = request.POST.get('text1')
text2 = request.POST.get('text2')
data = my_custom_function(text1, text2)
context = {'data': data}
else:
context = {}
return render(request, 'home.html', context)
здесь форма в шаблоне:
<form action="" method="POST">
{% csrf_token %}
<input class="form-control m-3 w-50 mx-auto" type="text" name="text1" id="text1" placeholder="">
<input class="form-control m-3 w-50 mx-auto" type="text" name="text2" id="text2" placeholder="">
<input class="btn btn-primary btn-lg my-3" type="submit" value="Submit">
</form>
Вы можете использовать throttling из Django REST framework. Но из коробки нет тарифа дросселирования на месяц. Возможно, вы можете использовать https://stackoverflow.com/a/50371440/4151233 для создания определенного класса.
В противном случае я рекомендую написать собственную реализацию. Она должна быть адаптирована к требованиям с помощью таких вопросов, как:
- Аутентифицированы ли мои пользователи при выполнении запросов?
- Насколько быстрой должна быть работа и какая нагрузка ожидается?
- Допустим ли стандартный запрос к БД или его необходимо реализовать с помощью кэш-фреймворка?