Первые трудности при изучении фрэймворка Django, на языке python. Просмотрев уроки по обработке запросов и middleware, я понял что ничего не понимаю в том, что от меня требуется, в домашнем задании. Еще три раза пересматривал уроки, дополнительно копался в интернетах и ютубах. Со скрипом, проблема с домашним заданием решилась.
Задача 1
Создайте view-функцию для загрузки файлов с ограничением по размеру. Если файл более 1 мегабайта - пользователю должна выдаваться ошибка.
Тут я прикинул - логично бы, конечно, проверять на стороне пользователя, сколько байтового пространства занимает файл и это число посылать на сервер. Но это уже нужно в такие дебри залезть, что мне, как ученику, пока не известно как делать. Да собственно этого и не требовалось.
Но как оказалось, от меня требуется скачать файл на сервер, там узнать его объем и после чего только либо его оставить на сервере, либо удалить, выдав пользователю ошибку. Работает это примерно так:
Ну и соответствующий шаблон в папку с шаблонами поместить:
Задача 2
Напишите throttling middleware, который будет ограничивать обработку запросов пользователя, если он делает обращения слишком часто.
Тут было проще. За основу брался код из лекций, как и в первом задании, и нужно было чуть доработать сей код. Добавил переменную self.request_time = {} (словарь, в котором будет храниться время и ip-адрес последнего запроса).
Время берем из модуля time, это время не похожее на привычное нам время. Это число секунд прошедших с 1 января 1970 года, 00:00:00, так называемое время эпохи Unix. Его я округлил до секунд. Если разница времени последнего запроса и текущего, с одного и того же ip-адреса, не превышает 10 секунд - пользователь получает ошибку.
Ну и соответственно шаблон с ошибкой
Надеюсь сия публикация кому-то помогла. Не забываем лайкать текст, вам не сложно а мне - есть к чему стремиться!