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

Поле FilePathField

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

Синтаксис

from django import forms class YourForm(forms.Form): file = forms.FilePathField(path='/path/to/directory/', **options)

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

Поле FilePathField принимает следующие ключевые параметры:

from django import forms class DocumentForm(forms.Form): document = forms.FilePathField( path='/home/user/documents/', recursive=True, match=r'\.txt$', allow_files=True, allow_folders=False, required=False )

Пример . Использование в форме

Создадим форму для выбора конфигурационного файла из директории '/etc/myapp/':

from django import forms class ConfigForm(forms.Form): config_file = forms.FilePathField( path='/etc/myapp/', match=r'\.conf$', recursive=False, label='Configuration file', help_text='Select a .conf file from the config directory' )

Пример . Обработка данных формы

Рассмотрим, как обработать данные из формы с FilePathField во view:

from django.shortcuts import render from .forms import ConfigForm def select_config(request): res = None if request.method == 'POST': form = ConfigForm(request.POST) if form.is_valid(): selected_file = form.cleaned_data['config_file'] res = f"Selected file: {selected_file}" else: form = ConfigForm() return render(request, 'config.html', {'form': form, 'result': res})

Результат при успешной отправке формы:

"Selected file: /etc/myapp/settings.conf"

Пример . С фильтрацией по расширению

Используем параметр match для отображения только изображений в формате 'png' или 'jpg':

from django import forms class ImageSelectForm(forms.Form): image = forms.FilePathField( path='/media/images/', match=r'\.(png|jpg|jpeg)$', recursive=True, label='Select an image' )

Пример . С разрешением выбора папок

Разрешим пользователю выбирать как файлы, так и папки, установив параметры allow_files и allow_folders:

from django import forms class FolderSelectForm(forms.Form): path = forms.FilePathField( path='/home/user/projects/', allow_files=False, allow_folders=True, recursive=True, label='Select project folder' )

Пример . Использование в модели

Поле FilePathField также можно использовать в моделях Django:

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

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

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