Guia Rápido de Configuração e Uso do Django

Instalação do Django

Utilize o pip para a instalação do framework:

pip install django==3.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

No PyCharm, a instalação é realizada diretamente durante a criação de um novo projeto Django.

Criação de um Projeto

Via linha de comando:

django-admin startproject meu_projeto

No PyCharm, navegue até File > New Project > Django, configure o caminho do projeto, o interpretador Python e o nome do aplicativo inicial.

Iniciando o Servidor de Desenvolvimento

Através do terminal, dentro do diretório raiz do projeto:

python manage.py runserver
python manage.py runserver 8080
python manage.py runserver 0.0.0.0:9090

No PyCharm, basta executar a configuração de execução pré-definida (o botão verde).

Configurações Essenciais em settings.py

Para permitir requisições POST durante o desenvolvimento, comente a linha do CsrfViewMiddleware na lista MIDDLEWARE.

Configuração de arquivos estáticos:

STATIC_URL = '/arquivos_estaticos/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'pasta_estatica'),
]

Configure a conexão com o banco de dados na variável DATABASES. Registre seus aplicativos na lista INSTALLED_APPS e defina o diretório de templates em TEMPLATES.

Criação e Registro de um Aplicativo (App)

Para criar um novo app:

python manage.py startapp app_vendas

Registre-o em INSTALLED_APPS utilizando seu nome ou caminho completo da classe de configuração.

Roteamento de URLs

Em urls.py, importe as views do seu aplicativo e mapeie as URLs para as funções correspondentes:

from app_vendas import views as vendas_views

urlpatterns = [
    path('lista-produtos/', vendas_views.lista_produtos),
    path('criar-pedido/', vendas_views.criar_pedido),
]

Funções de Visão (Views)

As views processam as requisições e retornam respostas. São importados três atalhos principais do Django:

from django.shortcuts import render, HttpResponse, redirect

def minha_view(request):
    # Lógica de negócio
    dados = {'chave': 'valor'}
    return render(request, 'template.html', dados)
    # return HttpResponse('Resposta em texto')
    # return redirect('/nova-url/')

Sintaxe de Templates

Para rendeirzar dados em um template HTML, passe um contexto para a função render. No template, utilize a sintaxe de chaves duplas para variáveis e tags percentuais para loops:

{{ lista_itens }}

{% for item in lista_itens %}
    <p>{{ forloop.counter }} - {{ item.nome }} (ID: {{ item.pk }})</p>
{% endfor %}

Trabalhando com Formulários HTML

Ao criar um formulário, defina os atributos action (destino dos dados), method (geralmente 'post') e novalidate (opcional). Os campos input devem possuir o atributo name para serem enviados. Inclua um botão de envio.

Diferenças entre GET e POST

GET é usado para recuperar dados. Acessado via URL direta, links ou formulários sem método. Os parâmetros ficam na URL (request.GET.get('parametro')).

POST é usado para enviar dados (criar, atualizar). Acessado via formulários com method="post". Os dados são obtidos com request.POST.get('campo').

Conexão com Banco de Dados MySQL

  1. Crie o banco de dados no MySQL manualmente.
  2. Em settings.py, configure DATABASES com as credenciais (ENGINE, NAME, HOST, PORT, USER, PASSWORD).
  3. No arquivo __init__.py do projeto, adicione:
import pymysql
pymysql.install_as_MySQLdb()

Definição de Modelos e ORM

No arquivo models.py, defina suas classes herdando de models.Model. Cada classe corresponde a uma tabela, e os atributos aos campos.

from django.db import models

class Fabricante(models.Model):
    nome = models.CharField(max_length=100)

class Produto(models.Model):
    descricao = models.CharField(max_length=200)
    fabricante = models.ForeignKey(Fabricante, on_delete=models.CASCADE)

Execute os comandos de migração para aplicar as alterações no banco:

python manage.py makemigrations
python manage.py migrate

Operações com ORM

Principais operações usando o gerenciador de objetos .objects:

# Criar um novo registro
novo_fab = Fabricante.objects.create(nome='TechCorp')

# Consultar todos os registros
todos_fabricantes = Fabricante.objects.all()

# Consulta filtrada
fabricante_especifico = Fabricante.objects.get(id=1)
lista_filtrada = Fabricante.objects.filter(nome__icontains='Tech')

# Atualização
Fabricante.objects.filter(id=1).update(nome='NovaTech')
obj = Fabricante.objects.get(id=1)
obj.nome = 'MegaTech'
obj.save()

# Exclusão
Fabricante.objects.filter(nome='Obsoleto').delete()

Relacionamentos e Queries Avançadas

Para relacionamentos de chave estrangeira, a navegação entre objetos é direta. A consulta de produtos com seu fabricante seria:

produtos = Produto.objects.select_related('fabricante').all()

for produto in produtos:
    print(f"{produto.descricao} - Fabricante: {produto.fabricante.nome}")

A criação de um produto relacionado pode ser feita de duas formas:

# Usando o objeto do fabricante
fab_obj = Fabricante.objects.get(id=1)
Produto.objects.create(descricao='Widget', fabricante=fab_obj)

# Usando o ID da chave estrangeira diretamente
Produto.objects.create(descricao='Gadget', fabricante_id=2)

Tags: Django Python WebDevelopment ORM Models

Publicado em 5-29 18:42 por Thomas