Pesquisa de site

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.

Artigos relacionados: