Найти тему
Движение-Жизнь

Django. Обработка запросов и middleware

Оглавление

Первые трудности при изучении фрэймворка Django, на языке python. Просмотрев уроки по обработке запросов и middleware, я понял что ничего не понимаю в том, что от меня требуется, в домашнем задании. Еще три раза пересматривал уроки, дополнительно копался в интернетах и ютубах. Со скрипом, проблема с домашним заданием решилась.

Задача 1

Создайте view-функцию для загрузки файлов с ограничением по размеру. Если файл более 1 мегабайта - пользователю должна выдаваться ошибка.

Тут я прикинул - логично бы, конечно, проверять на стороне пользователя, сколько байтового пространства занимает файл и это число посылать на сервер. Но это уже нужно в такие дебри залезть, что мне, как ученику, пока не известно как делать. Да собственно этого и не требовалось.

Но как оказалось, от меня требуется скачать файл на сервер, там узнать его объем и после чего только либо его оставить на сервере, либо удалить, выдав пользователю ошибку. Работает это примерно так:

-2

Ну и соответствующий шаблон в папку с шаблонами поместить:

-3

Задача 2

Напишите throttling middleware, который будет ограничивать обработку запросов пользователя, если он делает обращения слишком часто.

Тут было проще. За основу брался код из лекций, как и в первом задании, и нужно было чуть доработать сей код. Добавил переменную self.request_time = {} (словарь, в котором будет храниться время и ip-адрес последнего запроса).

Время берем из модуля time, это время не похожее на привычное нам время. Это число секунд прошедших с 1 января 1970 года, 00:00:00, так называемое время эпохи Unix. Его я округлил до секунд. Если разница времени последнего запроса и текущего, с одного и того же ip-адреса, не превышает 10 секунд - пользователь получает ошибку.

-4

Ну и соответственно шаблон с ошибкой

-5

Надеюсь сия публикация кому-то помогла. Не забываем лайкать текст, вам не сложно а мне - есть к чему стремиться!

Всем всех благ!