Introdução

Neste tutorial, abordaremos a construção de uma aplicação web de gerenciamento de anéis de formatura utilizando os frameworks Django e Flask, duas das ferramentas mais populares para desenvolvimento web em Python. Essa aplicação permitirá que os usuários personalizem seus anéis e façam compras online. Primeiro, iremos configurar um ambiente Django para gerenciar os dados e a lógica de negócio, antes de integrar uma API com Flask para gerenciar personalizações e facilitar as vendas. O guia é projetado para desenvolvedores com conhecimentos básicos em Python que desejam explorar como frameworks diferentes podem ser utilizados em conjunto para criar aplicativos completos e escaláveis.

Etapas

  1. Configuração do Ambiente de Desenvolvimento

    Para começar, certifique-se que você tem o Python instalado em seu sistema. Você pode confirmar usando o comando ‘python –version’. Em seguida, instale o Django e o Flask usando pip. Crie um ambiente virtual para organizar suas dependências.

    commands
    # Verificar Python instalado
    python --version
    # Criar um ambiente virtual
    python -m venv env
    # Ativar ambiente virtual (Windows)
    env\Scripts\activate
    # Ativar ambiente virtual (Linux/Mac)
    source env/bin/activate
    # Instalar Django e Flask
    pip install django flask

  2. Criação do Projeto Django

    Crie um novo projeto Django utilizando o comando ‘django-admin startproject’. Em seguida, crie um aplicativo dentro do projeto para gerenciar os anéis.

    commands
    # Criar novo projeto Django
    django-admin startproject ring_management
    # Navegar para o diretório do projeto
    cd ring_management
    # Criar aplicativo para gerenciamento de anéis
    python manage.py startapp rings

  3. Definindo o Modelo de Dados

    No aplicativo ‘rings’, defina o modelo de dados representando o Anel. Isso incluirá campos como nome, descrição e preço. Como nosso sistema tem um foco em personalização, adicionaremos um campo para URL da imagem.

    Rings/models.py
    from django.db import models
    
    class Ring(models.Model):
        name = models.CharField(max_length=255)
        description = models.TextField()
        price = models.DecimalField(max_digits=10, decimal_places=2)
        image_url = models.URLField()
    
        def __str__(self):
            return self.name

  4. Configuração do Banco de Dados

    Abra o arquivo settings.py do seu projeto e configure o banco de dados que você vai usar. Para este exemplo, use o SQLite, que é muito simples e pode ser feito apenas salvando os dados em um arquivo.

    settings.py
    # Definindo a configuração do banco de dados
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }

  5. Executando as Migrações

    Após definir seus modelos, você deve criar as tabelas do banco de dados. Use os comandos abaixo para criar as migrações e aplicá-las ao banco de dados.

    commands
    # Criar migrações do modelo
    python manage.py makemigrations
    # Aplicar migrações
    python manage.py migrate

  6. Configurando as URLs do Django

    Defina as URLs para o aplicativo Django no arquivo urls.py. Vamos criar endereços para listar todos os anéis, mostrar informações de um anel específico e permitir a criação de novos anéis.

    Rings/urls.py
    from django.urls import path
    from .views import RingList, RingDetail
    
    urlpatterns = [
        path('', RingList.as_view(), name='ring-list'),
        path('<int:pk>/', RingDetail.as_view(), name='ring-detail'),
    ]

  7. Implementação das Views no Django

    Implemente as views para os anéis em ‘views.py’. Utilizaremos as classes base de ListView e DetailView para listar e detalhar os produtos.

    Rings/views.py
    from django.views.generic import ListView, DetailView
    from .models import Ring
    
    class RingList(ListView):
        model = Ring
        template_name = 'ring_list.html'
    
    class RingDetail(DetailView):
        model = Ring
        template_name = 'ring_detail.html'

  8. Construindo a API com Flask

    Crie uma nova aplicação Flask para gerenciar as personalizações dos anéis. Utilize o Flask para construir rotas que permitirão alterar ou adicionar informações sobre anéis de formatura.

    Flask/app.py
    from flask import Flask, request, jsonify
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///rings.db'
    db = SQLAlchemy(app)
    
    class Ring(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(255), nullable=False)
        description = db.Column(db.Text, nullable=False)
        image_url = db.Column(db.String(255), nullable=False)
    
    @app.route('/rings', methods=['POST'])
    def add_ring():
        data = request.get_json()
        new_ring = Ring(name=data['name'], description=data['description'], image_url=data['image_url'])
        db.session.add(new_ring)
    db.session.commit()
        return jsonify({'message': 'Anel adicionado com sucesso'}), 201
    
    if __name__ == '__main__':
        db.create_all()
        app.run(debug=True

  9. Testes e Verificação da Aplicação

    Teste a sua aplicação Django acessando as URLs definidas em um navegador para verificar se a listagem e os detalhes estão funcionando. Use ferramentas como Postman para testar as requisições à sua API Flask.

    commands
    # Executar o servidor Django
    python manage.py runserver
    # Executar o servidor Flask
    python Flask/app.py

Conclusão

Neste tutorial, você aprendeu como construir uma aplicação web para gerenciar anéis de formatura utilizando Django para a parte de backend e Flask para a API de personalização. Cada framework possui suas peculiaridades e é importante entender como integrá-los para obter uma aplicação completa e funcional. Agora você pode expandir essa aplicação adicionando autenticação, mais funcionalidades e melhorando a interface do usuário com front-ends modernos como React ou Vue.js.

Hashtags

#Django #Flask #Python #WebDevelopment #APIs #Ecommerce