Fundamentos e Operações Essenciais no Framework Django

O Django é um framework robusto que segue o padrão MVT (Model-View-Template). Este guia aborda os conceitos fundamentais para estabelecer o fluxo de dados entre o front-end e o banco de dados, além de detalhar as configurações necessárias para um ambiente de desenvolvimento funcional.

Gerenciamento de Arquivos Estáticos

Arquivos como CSS, JavaScript e imagens são fundamentais para a interface. No Django, organizamos esses recursos em um diretório geralmente chamado static. Para que o servidor consiga entregar esses arquivos, é necessário configurar o arquivo settings.py.

# settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
   BASE_DIR / "static",
]

Para referenciar esses arquivos nos templates HTML de forma dinâmica, utilizamos a tag {% load static %}. Isso garante que, se o prefixo da URL mudar na configuração, o link no HTML será atualizado automaticamente.

{% load static %}
<link rel="stylesheet" href="{% static 'css/main_style.css' %}">
<script src="{% static 'js/core_scripts.js' %}"></script>

Manipulação de Formulários e Requisições

O envio de dados do usuário para o servidor ocorre primariamente via formulários HTML, utilizando os atributos action e method.

  • GET: Os dados são anexados à URL (ex: ?id=10&tipo=admin). É ideal para buscas e filtros, mas possui limitação de tamanho.
  • POST: Os dados são enviados no corpo da requisição. É o método seguro para envio de informações sensíveis, como senhas ou grandes volumes de dados.

O Objeto Request

No Django, cada view recebe um objeto request que encapsula os metadados da requisição. Podemos acessar os parâmetros enviados através de atributos específicos:

def processar_dados(request):
   metodo = request.method  # Retorna 'GET' ou 'POST'
   
   if metodo == 'POST':
       # Obtém um valor único
       usuario = request.POST.get('username')
       # Obtém uma lista de valores (como em checkboxes)
       selecionados = request.POST.getlist('items')
   
   return render(request, 'index.html')

Configuração e Integração com Banco de Dados

Embora o Django venha configurado com SQLite por padrão, projetos em produção geralmente utilizam sistemas como MySQL ou PostgreSQL. A alteração é feita no dicionário DATABASES:

DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.mysql',
       'NAME': 'nome_do_banco',
       'USER': 'admin_user',
       'PASSWORD': 'strong_password',
       'HOST': '127.0.0.1',
       'PORT': '3306',
   }
}

Para conectar ao MySQL usando Python 3, recomenda-se a instalação do pacote mysqlclient.

Mapeametno Objeto-Relacional (ORM)

O ORM do Django permite interagir com o banco de dados utilizando sintaxe Python em vez de SQL puro. Classes representam tabelas e instâncias representam registros.

Definição de Modelos

# models.py
from django.db import models

class Colaborador(models.Model):
   id_func = models.AutoField(primary_key=True)
   nome_completo = models.CharField(max_length=100)
   idade = models.IntegerField()
   email = models.EmailField(unique=True)

Após definir o modelo, é necessário sincronizar a estrutura com o banco de dados através dos comandos de migração:

python manage.py makemigrations  # Gera o plano de alteração
python manage.py migrate         # Aplica as alterações no banco

Implementação Prática: Fluxo de CRUD

Abaixo, um exemplo de como estruturar operações de listagem, inserção e edição em um sistema de gestão simples.

1. Roteamento (urls.py)

from django.urls import path
from . import views

urlpatterns = [
   path('lista/', views.listar_colaboradores, name='url_lista'),
   path('cadastro/', views.salvar_novo, name='url_cadastro'),
   path('editar/<int:pk>/', views.atualizar_dados, name='url_editar'),
]

2. Lógica de Visualização (views.py)

from django.shortcuts import render, redirect
from .models import Colaborador

def salvar_novo(request):
   if request.method == 'POST':
       Colaborador.objects.create(
           nome_completo=request.POST.get('nome'),
           idade=request.POST.get('idade'),
           email=request.POST.get('email')
       )
       return redirect('url_lista')
   return render(request, 'form_cadastro.html')

def listar_colaboradores(request):
   items = Colaborador.objects.all()
   return render(request, 'lista.html', {'colaboradores': items})

3. Template com Tags de Loop

<table>
   <thead>
       <tr><th>Nome</th><th>Ações</th></tr>
   </thead>
   <tbody>
       {% for pessoa in colaboradores %}
       <tr>
           <td>{{ pessoa.nome_completo }}</td>
           <td>
               <a href="{% url 'url_editar' pessoa.id_func %}">Editar</a>
           </td>
       </tr>
       {% endfor %}
   </tbody>
</table>

Arquitetura de Processamento de Requisições

O ciclo de vida de uma requisição no Django segue este fluxo:

  1. O navegador envia uma requisição HTTP.
  2. O Web Server Gateway Interface (WSGI/ASGI) recebe o tráfego.
  3. O Middleware processa a requisição (segurança, sessões, CSRF).
  4. O URLconf direciona para a View correspondente.
  5. A View interage com o Model (Banco de Dados) e renderiza o Template.
  6. A resposta HTTP é enviada de volta ao cliente.

Tags: Django ORM Python MySQL WebDevelopment

Publicado em 7-16 07:10