FileExtensionValidator – Validar extensões de arquivo no Django
Os desenvolvedores podem criar aplicativos web de forma rápida e simples usando a estrutura web Python de alto nível Django. Uma coleção completa de ferramentas e bibliotecas é fornecida para a criação de aplicativos da web e segue o paradigma arquitetônico Model-View-Controller (MVC).
Por que o Django é usado em Python?
Desde modestos empreendimentos pessoais até extensas soluções comerciais, o Django é usado para criar todos os tipos de aplicações web. A construção de sites complexos e baseados em dados, incluindo sites de redes sociais como Instagram, plataformas de comércio eletrônico e sistemas de gerenciamento de conteúdo, é onde ela se destaca. Inúmeras funções estão disponíveis imediatamente com o Django, como roteamento de URL, administração de banco de dados, autenticação de usuário e modelos. Por causa disso, os desenvolvedores podem se concentrar na construção da lógica do aplicativo em vez de gastar tempo com infraestrutura.
Com a ajuda do FileExtensionValidator, os desenvolvedores podem criar suas próprias listas de extensões de arquivo permitidas e proibidas, oferecendo uma solução versátil e adaptável. Eles podem então modificar o procedimento de validação para atender aos requisitos de suas aplicações exclusivas, garantindo que apenas arquivos seguros e relevantes sejam aceitos.
Devido à fácil integração do FileExtensionValidator com a estrutura de validação de formulários do Django, a implementação é simples. Os desenvolvedores podem adicionar essa camada crucial de proteção aos seus formulários de upload de arquivos com algumas linhas de código, protegendo seus aplicativos e usuários de perigos potenciais.
Como usar o validador de extensão de arquivo?
Para verificar a extensão de um arquivo enviado por um FileField ou ImageField, o Django oferece o validador FileExtensionValidator.
Exemplo 1
Neste exemplo, criamos uma visualização para controlar uploads de arquivos. Utilizando as informações fornecidas, construímos um objeto formulário, verificamos sua validade e então salvamos o conteúdo do formulário no banco de dados.
Algoritmo
Usando o comando python manage.py startapp fileuploader, crie um novo aplicativo Django.
Defina um modelo com um FileField para fazer upload do arquivo no arquivo models.py do aplicativo fileuploader:
No arquivo forms.py do aplicativo fileuploader, crie um formulário para gerenciar uploads de arquivos.
No arquivo views.py do programa fileuploader, crie uma visualização para gerenciar o upload do arquivo.
Crie os dois modelos HTML upload.html e success.html na pasta de modelos do aplicativo fileuploader para visualizar o formulário de upload e a mensagem de sucesso após um upload bem-sucedido.
O arquivo urls.py do projeto agora deve conter o padrão de URL, e o arquivo settings.py do projeto deve adicionar o aplicativo fileuploader à lista INSTALLED_APPS:
Exemplo
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.'''
Saída
Obteremos um arquivo de índice básico conforme mostrado abaixo, ao realizar as etapas acima.
Isso permite apenas arquivos png e não permite nenhum outro arquivo.
Conclusão
O FileExtensionValidator no Django é uma ferramenta essencial para verificar extensões de arquivos em aplicações web, para resumir. Ele oferece aos desenvolvedores a capacidade de impor restrições, aumentar a segurança e fornecer uma experiência de usuário perfeita quando se trata de uploads de arquivos. Ao incorporar este validador em seus projetos Django, os desenvolvedores podem garantir a consistência dos arquivos carregados, proteger contra possíveis ameaças à segurança e exercer controle rigoroso sobre o procedimento de upload de arquivos.