Метод delete

Метод delete применяется к объекту хранилища и удаляет файл по указанному имени. Метод принимает имя файла в качестве аргумента и возвращает True в случае успешного удаления и False если файл не существует. При удалении файла метод автоматически обрабатывает все необходимые операции, включая закрытие файловых дескрипторов.

Синтаксис

pythonstorage.delete(name)

Параметры

Метод принимает следующие параметры:

Пример

Давайте удалим файл с именем "documents/report.txt" используя стандартное хранилище:

pythonfrom django.core.files.storage import default_storage

# Удаляем файл из хранилища
result = default_storage.delete("documents/report.txt")
print(f"File deleted: {result}")

Результат выполнения кода:

python"File deleted: True"

Пример

Попробуем удалить несуществующий файл и обработать результат:

pythonfrom django.core.files.storage import default_storage

# Попытка удалить несуществующий файл
result = default_storage.delete("images/missing.png")
if result:
  print("File was deleted successfully")
else:
  print("File does not exist or could not be deleted")

Результат выполнения кода:

python"File does not exist or could not be deleted"

Пример

Удалим несколько файлов в цикле, используя список имен:

pythonfrom django.core.files.storage import default_storage

# Список файлов для удаления
files_to_delete = [
  "temp/temp1.log",
  "temp/temp2.log",
  "temp/temp3.log"
]

# Удаляем файлы
for file_name in files_to_delete:
  if default_storage.exists(file_name):
    deleted = default_storage.delete(file_name)
    print(f"Deleted {file_name}: {deleted}")
  else:
    print(f"File {file_name} does not exist")

Результат выполнения кода:

python"Deleted temp/temp1.log: True"
"Deleted temp/temp2.log: True"
"Deleted temp/temp3.log: True"

Пример

Удалим файл, связанный с моделью, используя поле FileField:

pythonfrom django.core.files.storage import default_storage
from myapp.models import Document

# Находим документ и удаляем его файл
try:
  doc = Document.objects.get(id=1)
  file_name = doc.file.name
  deleted = default_storage.delete(file_name)
  if deleted:
    doc.file.delete(save=True)
    print(f"File {file_name} deleted from storage")
except Document.DoesNotExist:
  print("Document not found")

Результат выполнения кода:

python"File documents/contract_2025.pdf deleted from storage"

Пример

Используем метод delete с пользовательским хранилищем FileSystemStorage и указанием базовой директории:

pythonfrom django.core.files.storage import FileSystemStorage
import os

# Создаем хранилище с пользовательской директорией
storage = FileSystemStorage(
  location=os.path.join("media", "user_files"),
  base_url="/media/user_files/"
)

# Удаляем файл из указанной директории
file_name = "profile/avatar.jpg"
if storage.exists(file_name):
  result = storage.delete(file_name)
  print(f"Avatar deleted: {result}")
else:
  print("Avatar file not found")

Результат выполнения кода:

python"Avatar deleted: True"

Смотрите также

  • метод save,
    который сохраняет файл в хранилище
  • метод exists,
    который проверяет существование файла
  • метод open,
    который открывает файл в хранилище
  • метод listdir,
    который возвращает список файлов в директории