Метод url

Метод url применяется к объекту Storage и возвращает строку с URL-адресом, по которому можно получить доступ к файлу. URL генерируется на основе настроек хранилища и имени файла. Этот метод особенно полезен, когда необходимо получить публичную ссылку на файл для использования в шаблонах или API. В зависимости от типа хранилища, URL может указывать на локальный путь или на удаленный ресурс, например, в облачном сервисе.

Синтаксис

pythonstorage.url(name)

Параметры метода:

Пример . С хранилищем по умолчанию

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

pythonfrom django.core.files.storage import default_storage

file_name = "documents/report.pdf"
file_url = default_storage.url(file_name)

print(file_url)

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

python"/media/documents/report.pdf"

Пример . С FileSystemStorage

Создадим экземпляр хранилища FileSystemStorage и получим URL для файла "images/photo.jpg":

pythonfrom django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location="/var/www/media")
file_name = "images/photo.jpg"
file_url = fs.url(file_name)

print(file_url)

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

python"/media/images/photo.jpg"

Пример . С моделью Django

Рассмотрим пример использования метода url в модели Article для получения URL загруженного изображения:

pythonfrom django.db import models
from django.core.files.storage import default_storage

class Article(models.Model):
  title = models.CharField(max_length=200)
  image = models.FileField(upload_to="articles/")

  def get_image_url(self):
    if self.image:
      return default_storage.url(self.image.name)
    return None

article = Article.objects.get(id=1)
image_url = article.get_image_url()

print(image_url)

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

python"/media/articles/screenshot.png"

Пример . С InMemoryStorage

Используем InMemoryStorage для получения URL файла, хранящегося в памяти:

pythonfrom django.core.files.storage import InMemoryStorage

memory_storage = InMemoryStorage()
file_name = "temp/data.txt"
file_url = memory_storage.url(file_name)

print(file_url)

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

python"/temp/data.txt"

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

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