Загрузка файла
Шаг 1: Вывод формы
Создание формы для загрузки файла:
# forms.py from django import forms class UploadFileForm(forms.Form): file = forms.FileField()
В контроллере его надо подключить и передать в шаблон:
# views.py from from django.shortcuts import render from .forms import UploadFileForm # подключение формы def page(request): form = UploadFileForm() return render(request, "page.html", {"form": form})
Вывод в шаблоне:
<form method="post" enctype="multipart/form-data"> {% csrf_token %} {{ form }} <input type="submit"> </form>
В результате сгенерируется HTML-код формы.
Для загрузки файла надо указать атрибут enctype="multipart/form-data"
, т.к. без него файлы не будут загружаться на сайт.
Шаг 2: Загрузка файла
Файлы, загруженные через форму, доступны в параметре request.FILES
.
# views.py from from django.shortcuts import render from .forms import UploadFileForm # подключение формы def page(request): if request.method == 'POST': form = UploadFileForm(request.POST, request.FILES) save_path = '/var/www/django_site/upload/' # папка для сохранения файлов if form.is_valid(): # сохранение файла with open(save_path+request.FILES['file'].name, 'wb+') as destination: for chunk in request.FILES['file'].chunks(): destination.write(chunk) else: form = UploadFileForm() return render(request, "page.html", {'form': form})
Код выше будет загружать файлы в папку «/var/www/django_site/upload/».
Поддержать автора