Тёмный

#48. Загрузка (upload) файлов на сервер. Классы FileField и ImageField | Уроки по Django 4 

selfedu
Подписаться 151 тыс.
Просмотров 8 тыс.
50% 1

Практический курс по Django: stepik.org/a/183363
Телеграм-канал Django: t.me/django_selfedu
Инфо-сайт: proproprogs.ru/django4
Создаем форму загрузки файлов на сервер. Классы полей формы FileField и ImageField фреймворка Django.
48_sitewomen.zip: github.com/selfedu-rus/django...
Загрузка файлов: docs.djangoproject.com/en/4.2...

Опубликовано:

 

27 окт 2023

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 23   
@evgenyzakiev693
@evgenyzakiev693 7 месяцев назад
Спасибо, Сергей! Здоровья тебе🤝
@devidbrown8176
@devidbrown8176 4 месяца назад
Услышав про домашнее задание, принялся фантазировать. Вот, что получилось: .... import time ..... def handle_uploaded_file(f): with open(f'uploads/{time.strftime("%d_%m_%Y_at_%Hч%Mм%Sс")}_{f.name}', 'wb+') as destination: for chunk in f.chunks(): destination.write(chunk) Я использую тут модуль time у которого есть strftime, принимающий строку, задающую формат отображения текущего времени и даты. В моем случае, при каждом сохранении, в название файла, перед f.name добавляется: день_месяц_год_at_час_минут_секунд Т.е., если сохранять не чаще, чем раз в секунду, то каждый новый файл будет с уникальным названием и не будет повторяться и перезатираться.
@HeyArtem
@HeyArtem Месяц назад
Спасибо, все пашет! 🚜
@igorkulibaba7287
@igorkulibaba7287 7 месяцев назад
Это просто бесценно, спасибо что делитель с нами Конечно есть много вопросов, по ньансам.
@jadrezz.g
@jadrezz.g Месяц назад
Хорошим вариантом уникального имени для большого потока файлов будет import time name = round(time.time() * 1000)
@sergeysergey421
@sergeysergey421 7 месяцев назад
Нужно опцию добавить in memory через модуль io для хранения временных файлов в сессии пользователя. Если например у нас будет инженерная программа для расчетов, и нужно будет загрузить исходные данные
@andredru4278
@andredru4278 6 месяцев назад
Спасибо. Интересно.
@_mrmark
@_mrmark 7 месяцев назад
Спасибо!
@ibrahimoglu
@ibrahimoglu 7 месяцев назад
👍
@ericcartman8047
@ericcartman8047 7 месяцев назад
Планируется ли курс по Kivy?
@selfedu_rus
@selfedu_rus 7 месяцев назад
пока нет
@whoami866
@whoami866 7 месяцев назад
Сергей добрый вечер, скажите пожалуйста я человек который посмотрел все видео по django3. Какие видео мне нужно и стоит посмотреть по django4?
@selfedu_rus
@selfedu_rus 7 месяцев назад
Я бы рекомендовал посмотреть весь курс + курс на Stepik.
@whoami866
@whoami866 7 месяцев назад
@@selfedu_rus вы уверены что это не будет пустая трата времени?
@selfedu_rus
@selfedu_rus 7 месяцев назад
@@whoami866 нет, там много нового, а старое можно промотать
@user-kf7xi8gc3o
@user-kf7xi8gc3o 7 месяцев назад
не получается открыть Evaluate Expression. В консоли POST запрос виден, все нормально, код 200, а в Debugger ничего не видно в режиме отладки. Что у меня не так?
@_a_lebed
@_a_lebed 6 месяцев назад
Тоже так было. Переделал все заново - заработало. Так и не понял, где была ошибка
@user-eo9kz8ru9d
@user-eo9kz8ru9d 5 месяцев назад
Тоже самое не вижу ничего. Что по итогу нужно сделать?
@HeyArtem
@HeyArtem Месяц назад
И у меня так было, просто все презапустил, со страницы ушел, вернулся и все ОК!
@Liz-ll3hb
@Liz-ll3hb 7 месяцев назад
А что нужно чтобы посмотреть оставшиеся 24 недоступных видео?
@selfedu_rus
@selfedu_rus 7 месяцев назад
Открываются через день. Либо приобрести курс по Django (ссылка под видео) + плюс некоторые дополнительные видео.
@HeyArtem
@HeyArtem Месяц назад
Я реализовал уникальность имени файла через uuid (4 тип, он типа не использует ваш мак адрес и секретней 😃). В начале имени файла присвоил пять сиволов и дефис. Выглядеть будет примерно так 53c58-ИмяФайла.jpg. Мне не нравится так, хотел бы ИмяФайла-53c58.jpg, но, если я меняю, то у меня получается ИмяФайла.jpg-53c58. def random_5_characters_for_filename() -> str: ''' Генерирую рандомную последовательность из пяти символов. Использую UUID (универсальный уникальный идентификатор). Объект UUID-в строку-в список-срез-джойню в строку-удаляю запятые ''' return ','.join(list(str(uuid.uuid4()))[-5:]).replace(',', '') def handle_uploaded_file(f): ''' Фун-я для загрузки файла. К имени фото, в начале прикреплю пять рандомных символов ''' with open(f"uploads/{random_5_characters_for_filename()}-{f.name}", "wb+") as destination: for chunk in f.chunks(): destination.write(chunk) def about(request): '''О сайте''' if request.method == 'POST': form = UploadFileForm(request.POST, request.FILES) if form.is_valid(): # 'file' - птмчт в UploadFileForm так назвал handle_uploaded_file(form.cleaned_data['file']) else: form = UploadFileForm() return render( request, 'women/about.html', {'title': 'О сайте', 'menu': menu, 'form': form} )
@mjolnik
@mjolnik 22 дня назад
>Мне не нравится так, хотел бы ИмяФайла-53c58.jpg, но, если я меняю, то у меня получается ИмяФайла.jpg-53c58. Можно сплитануть имя файла на непосредственно имя и расширение: file_n, file_e = f.name.split('.') f'uploads/{file_n}_{str(uuid4())[:5]}.{file_e}'
Далее
I need your help..
00:28
Просмотров 5 млн
Оптимизация Django. 1 - Django + Docker
50:08