FileExtensionValidator – проверка расширений файлов в Django
Разработчики могут быстро и просто создавать веб-приложения, используя высокоуровневую веб-инфраструктуру Python Django. Для создания веб-приложений предоставляется полный набор инструментов и библиотек, соответствующий архитектурной парадигме Модель-Представление-Контроллер (MVC).
Почему Django используется в Python?
От скромных личных усилий до обширных коммерческих решений, Django используется для создания всех видов веб-приложений. Он превосходен в создании сложных веб-сайтов, управляемых данными, включая сайты социальных сетей, таких как Instagram, платформы электронной коммерции и системы управления контентом. В Django доступны многочисленные функции, такие как маршрутизация URL-адресов, администрирование базы данных, аутентификация пользователей и создание шаблонов. Благодаря этому разработчики могут сосредоточиться на создании логики приложения, а не тратить время на инфраструктуру.
С помощью FileExtensionValidator разработчики могут создавать свои собственные списки разрешенных и запрещенных расширений файлов, предлагая универсальное и адаптируемое решение. Затем они могут изменить процедуру проверки в соответствии с требованиями своих уникальных приложений, гарантируя, что принимаются только безопасные и актуальные файлы.
Благодаря простой интеграции FileExtensionValidator со структурой проверки форм Django, реализация проста. Разработчики могут добавить этот важный уровень защиты в свои формы загрузки файлов с помощью нескольких строк кода, защищая свои приложения и пользователей от потенциальных опасностей.
Как использовать валидатор расширений файлов?
Чтобы проверить расширение файла, загруженного с помощью FileField или ImageField, Django предлагает валидатор FileExtensionValidator.
Пример 1
В этом примере мы создаем представление для управления загрузкой файлов. Используя предоставленную информацию, мы создаем объект формы, проверяем его достоверность и затем сохраняем содержимое формы в базе данных.
Алгоритм
Используя команду python Manage.py startapp fileuploader, создайте новое приложение Django.
Определите модель с помощью FileField для загрузки файла в файл models.py приложения fileuploader:
В файле form.py приложения fileuploader создайте форму для управления загрузкой файлов.
В файлеviews.py программы fileuploader создайте представление для управления загрузкой файлов.
Создайте два HTML-шаблона upload.html и Success.html в папке шаблонов приложения fileuploader, чтобы просмотреть форму загрузки и сообщение об успешной загрузке после успешной загрузки.
Файл urls.py проекта теперь должен содержать шаблон URL-адреса, а файл settings.py проекта должен добавить приложение fileuploader в список INSTALLED_APPS:
Пример
from django.db import models
from django.core.validators import FileExtensionValidator
from django import forms
from .models import UploadedFile
from django.shortcuts import render
from .forms import FileUploadForm
class UploadedFile(models.Model):
png_file = models. FileField(upload_to='png_files/', validators=
[FileExtensionValidator(allowed_extensions=['png'])])
class FileUploadForm(forms.ModelForm):
class Meta:
model = UploadedFile
fields = ['png_file']
'''The FileUploadForm class is an inheritor of forms in this instance.
Additionally, we have selected the png_file field as the field to be shown
and the UploadedFile model as the form's model.'''
#Defining the Upload method
def upload_file(request):
if request.method == 'POST':
form = FileUploadForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return render(request, 'fileuploader/success.html')
else:
form = FileUploadForm()
return render(request, 'fileuploader/upload.html', {'form': form})
# Code for settings.py file
INSTALLED_APPS = [
'fileuploader',
# ..
]
# Code for URL.py file
from django.urls import path
from fileuploader.views import upload_file
urlpatterns = [
path('upload/', upload_file, name='upload_file'),
# ...
]
'''Now that the server has been set up and is running, you can upload PNG
files by going to http://localhost:8000/upload/ and typing the command python
manage.py runserver.'''
Выход
После выполнения вышеуказанных шагов мы получим базовый индексный файл, как показано ниже.
Это позволяет использовать только файлы PNG и не разрешает использование других файлов.
Заключение
Подводя итог, FileExtensionValidator в Django — это важный инструмент для проверки расширений файлов в веб-приложениях. Это дает разработчикам возможность применять ограничения, повышать безопасность и обеспечивать удобство работы пользователя при загрузке файлов. Включив этот валидатор в свои проекты Django, разработчики могут обеспечить согласованность загружаемых файлов, защитить их от потенциальных угроз безопасности и осуществлять строгий контроль над процедурой загрузки файлов.