django загрузка файлов на сервер

Django — Загрузка файлов с сайта на свой сервер с ограничением по размеру и типу файла.

Думаю многи люди задовались вопросом, как загружать файлы на свой сервер в django? У меня недавно тоже встал этот вопрос ребром и я удачно решил его с чем сейчас и поделюсь с вами.

В приложении своего проекта создайте файл validators.py и добавьте в него код, который можно найти на просторах интернета.

В medels.py подгружаем его.

И в своей модели вызываем его

Хочу заметить, что данный вариант предоставляет возможность загружать только определенный тип файлов, который вы можете разрешить путем добавления типа файла в функции validate_file_extension
Что бы сделать и ограничение по размеру загружаемого файла, вам нужно посмотреть здесь.

Далее к примеру у вас на сайте есть форма обратной связи и вы хотите, чтоб пользователи могли отправлять вам файлы. Для этого открываем views.py вашего приложения где находится функция формы обратной связи и добавляем в нее этот параметр.

Если у вас форма создана из модели, то не забудте как в моем случае добавить поле files в forms.py и теперь в функции нам нужно добавить это поле для проверки

После проверки это поле files мы должны вывести в контекст

Чтоб функция отправляла сам файл нужно перед отправкой указать это. В моем случае это выглядит так.

И в шаблоне в вашу фрму нужно обязательно добавить созданое поле files перед кнопкой отправить и в тег добавить этот код

Все.
Если что-то не понятно объяснил, то вы можете оставить ваш вопрос в комментариях к статье я с удовольствием отвечу.

Как правило, для веб-приложения полезно загружать файлы (изображение профиля, песни, PDF, слова …). Давайте обсудим, как загружать файлы в этой главе.

Загрузка изображения

Перед началом игры с изображением убедитесь, что у вас установлена ​​библиотека изображений Python (PIL). Теперь, чтобы проиллюстрировать загрузку изображения, давайте создадим форму профиля в нашем myapp / forms.py –

Как видите, основное отличие здесь – это только формы . ImageField . ImageField убедится, что загруженный файл является изображением. Если нет, проверка формы не удастся.

Теперь давайте создадим модель «Профиль», чтобы сохранить загруженный профиль. Это делается в myapp / models.py –

Как вы можете видеть для модели, ImageField принимает обязательный аргумент: upload_to . Это место на жестком диске, где будут сохранены ваши изображения. Обратите внимание, что параметр будет добавлен в параметр MEDIA_ROOT, определенный в вашем файле settings.py.

Теперь, когда у нас есть Форма и Модель, давайте создадим представление в myapp / views.py –

Не пропустите часть, есть изменение при создании ProfileForm, мы добавили второй параметр: request.FILES . Если не пройти, проверка формы не удастся, давая сообщение, что изображение пустое.

Теперь нам просто нужен шаблон save.html и шаблон profile.html для формы и страницы перенаправления –

myapp / templates / save.html

myapp / templates / profile.html

Далее нам нужна пара URL-адресов, чтобы начать работу: myapp / urls.py

При доступе к «/ myapp / profile» мы получим следующий шаблон profile.html:

И на пост формы, сохраненный шаблон будет отображаться –

У нас есть пример для изображения, но если вы хотите загрузить другой тип файла, а не просто изображение, просто замените ImageField в Model и Form на FileField .

пример

Прежде всего, нам нужно добавить MEDIA_ROOT и MEDIA_URL в наш файл settings.py

Также здесь вы будете работать с ImageField , так что помните в таких случаях, установите Pillow library ( pip install pillow ). В противном случае у вас будет такая ошибка:

Подушка — это вилка PIL, Python Imaging Library, которая больше не поддерживается. Подушка обратно совместима с PIL.

Django поставляется с двумя полями формы для загрузки файлов на сервер, FileField и ImageField , следующий пример использования этих двух полей в нашей форме

Оцените статью