РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
24 of 818 menu

FilePathField

Поле FilePathField - это поле модели Django, которое предназначено для хранения пути к файлу. В отличие от FileField, которое управляет загрузкой файлов, FilePathField просто предоставляет выбор из существующих файлов в определённой директории на сервере. Это поле полезно, когда нужно выбрать один из заранее подготовленных файлов, например, шаблонов, конфигураций или статических ресурсов.

Основные параметры поля:

  • path - обязательный параметр, указывает путь к директории, из которой будут выбираться файлы. Путь может быть абсолютным или относительным (относительно BASE_DIR проекта).
  • recursive - булевый параметр. Если установлен в True, поиск файлов будет выполняться рекурсивно во всех поддиректориях. По умолчанию False.
  • match - необязательный параметр, принимает регулярное выражение (строку), по которому фильтруются имена файлов. Например, r"\.txt$" для выбора только текстовых файлов.
  • allow_files - булевый параметр, определяет, разрешён ли выбор файлов. По умолчанию True.
  • allow_folders - булевый параметр, определяет, разрешён ли выбор директорий. По умолчанию False.

Синтаксис

from django.db import models class MyModel(models.Model): file_path = models.FilePathField(path='путь_к_директории', **options)

Пример

Рассмотрим модель, которая хранит путь к выбранному файлу из директории 'templates'.

from django.db import models class TemplateChoice(models.Model): name = models.CharField(max_length=100) template_file = models.FilePathField(path='templates', match=r"\.html$") def __str__(self): return self.name

В этом примере поле template_file позволяет выбрать только файлы с расширением .html из директории templates.

Пример

Теперь создадим экземпляр модели и сохраним его с выбранным файлом.

from myapp.models import TemplateChoice # Создание записи с выбором файла choice = TemplateChoice.objects.create( name="Main page template", template_file="templates/main.html" ) choice.save() # Вывод всех сохранённых шаблонов for item in TemplateChoice.objects.all(): print(item.template_file)

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

"templates/main.html" "templates/base.html" "templates/footer.html"

Пример

Если необходимо разрешить выбор как файлов, так и папок, используйте параметры allow_files и allow_folders.

from django.db import models class Resource(models.Model): path = models.FilePathField( path='./static', recursive=True, allow_files=True, allow_folders=True )

Теперь поле path позволяет выбрать любой файл или папку внутри static и всех её поддиректориях.

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

  • поле FileField,
    которое управляет загрузкой файлов на сервер
  • поле ImageField,
    которое предназначено для загрузки изображений
  • поле TextField,
    которое хранит большие объёмы текста
  • поле CharField,
    которое хранит небольшие строки символов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить