Como se tornar um desenvolvedor backend: Django

Como se tornar um desenvolvedor backend: Django

O desenvolvimento backend é uma área da programação que se dedica a criar a lógica, o funcionamento e a comunicação dos sistemas web. O backend é responsável por processar as requisições dos usuários, interagir com bancos de dados, fornecer APIs e garantir a segurança e o desempenho das aplicações.

Um desenvolvedor backend precisa dominar diversas habilidades e tecnologias, tais como linguagens de programação, frameworks, protocolos, arquiteturas, padrões de projeto, testes, entre outras. Neste artigo, vamos focar em uma das linguagens e frameworks mais populares e versáteis para o desenvolvimento backend: Python e Django.

Python é uma linguagem de alto nível, interpretada, multi-paradigma e com uma sintaxe simples e elegante. Python possui uma grande variedade de bibliotecas e módulos que facilitam a implementação de diversas funcionalidades, desde análise de dados até inteligência artificial. Python também é uma linguagem muito usada para o desenvolvimento web, especialmente com o framework Django.

Django é um framework web de código aberto, escrito em Python, que segue o padrão MVC (Model-View-Controller) e oferece uma série de recursos para facilitar a criação de aplicações web robustas, escaláveis e seguras. Django possui um sistema de ORM (Object-Relational Mapping) que permite manipular bancos de dados relacionais de forma abstrata e intuitiva, um sistema de templates que permite gerar páginas HTML dinâmicas, um sistema de autenticação e autorização que permite gerenciar usuários e permissões, um sistema de administração que permite criar interfaces administrativas com poucas linhas de código, entre outros.

Para se tornar um desenvolvedor backend usando Django, é preciso seguir alguns passos e aprender alguns conceitos. Vamos ver quais são eles.


1. Aprender o básico de Python

Antes de usar o Django, é preciso ter uma boa base de Python. É recomendável aprender os conceitos fundamentais da linguagem, tais como variáveis, tipos de dados, operadores, estruturas de controle, funções, classes, objetos, herança, polimorfismo, exceções, módulos, pacotes, etc.

Existem diversos cursos, livros e tutoriais online que ensinam o básico de Python. Alguns exemplos são:

Além disso, é importante praticar o que se aprende. Uma boa forma de fazer isso é resolver exercícios e desafios de programação. Alguns sites que oferecem isso são:

2. Instalar e configurar o ambiente de desenvolvimento

Para usar o Django, é preciso instalar e configurar algumas ferramentas no seu computador. As principais são:

  • Python: A versão mais recente do Python é a 3.10. Você pode baixá-la no site oficial. Ao instalar o Python, certifique-se de marcar a opção Add Python to PATH para poder executar os comandos do Python no terminal.
  • Pip: Pip é o gerenciador de pacotes do Python. Ele permite instalar e atualizar as bibliotecas e módulos que você vai usar no seu projeto. O Pip já vem instalado com o Python, mas você pode verificar se ele está atualizado com o comando python -m pip install --upgrade pip.
  • Virtualenv: Virtualenv é uma ferramenta que permite criar ambientes virtuais isolados para cada projeto. Isso evita conflitos entre as versões e dependências das bibliotecas que você usa. Você pode instalar o Virtualenv com o comando pip install virtualenv.
  • Django: Django é o framework que você vai usar para criar as suas aplicações web. Você pode instalar o Django com o comando pip install django. A versão mais recente do Django é a 4.0.
  • IDE: IDE é a sigla para Integrated Development Environment, ou Ambiente de Desenvolvimento Integrado. É um software que facilita a escrita, a execução e a depuração do seu código. Existem diversas IDEs disponíveis para Python e Django, mas uma das mais populares e completas é o PyCharm. Você pode baixá-lo no site oficial. Existe uma versão gratuita (Community) e uma paga (Professional).

Depois de instalar essas ferramentas, você pode criar o seu primeiro projeto Django. Para isso, siga os seguintes passos:

  • Abra o terminal e navegue até a pasta onde você quer criar o seu projeto.
  • Crie um ambiente virtual com o comando virtualenv venv. Isso vai criar uma pasta chamada venv na sua pasta atual.
  • Ative o ambiente virtual com o comando venv\Scripts\activate (Windows) ou source venv/bin/activate (Linux/Mac). Isso vai mudar o prompt do terminal para indicar que você está no ambiente virtual.
  • Instale o Django no ambiente virtual com o comando pip install django.
  • Crie um projeto Django com o comando django-admin startproject myproject. Isso vai criar uma pasta chamada myproject na sua pasta atual, com alguns arquivos e subpastas.
  • Entre na pasta do projeto com o comando cd myproject.
  • Execute o servidor de desenvolvimento do Django com o comando python manage.py runserver. Isso vai iniciar uma aplicação web básica na porta 8000 do seu computador.
  • Abra o seu navegador e digite na barra de endereço http://localhost:8000/. Você deve ver uma página com o título The install worked successfully! Congratulations! e um ícone do Django. Isso significa que o seu projeto está funcionando corretamente.

3. Entender a estrutura e o funcionamento do Django

O Django segue o padrão MVC (Model-View-Controller), que é um padrão de arquitetura que separa as responsabilidades de cada componente da aplicação. No Django, esses componentes são chamados de Model, View e Template.

  • Model: É a camada que representa os dados da aplicação. O Model define as classes que correspondem às tabelas do banco de dados, os atributos que correspondem às colunas e os métodos que correspondem às operações. O Model também define as relações entre as classes, como um-para-um, um-para-muitos e muitos-para-muitos. O Model usa o sistema de ORM do Django para abstrair as consultas SQL e facilitar a manipulação dos dados.
  • View: É a camada que representa a lógica da aplicação. A View define as funções ou classes que recebem as requisições dos usuários, processam os dados, executam as regras de negócio e retornam as respostas. A View também define as URLs que mapeiam cada requisição para a função ou classe correspondente. A View pode retornar diferentes tipos de respostas, como páginas HTML, arquivos JSON, arquivos CSV, imagens, etc.
  • Template: É a camada que representa a apresentação da aplicação. O Template define os arquivos HTML que contêm os elementos visuais da interface, como cabeçalho, rodapé, menus, formulários, tabelas, etc. O Template também pode conter tags e filtros especiais do Django que permitem inserir dados dinâmicos nas páginas, como variáveis, loops, condicionais, etc.

Além desses componentes principais, o Django também possui outros componentes auxiliares, como:

  • Settings: É o arquivo que contém as configurações globais da aplicação, como o nome do projeto, o banco de dados usado, os aplicativos instalados, os middleware usados, etc.
  • Admin: É um sistema que permite criar interfaces administrativas para gerenciar os dados da aplicação de forma rápida e fácil. O Admin usa os modelos definidos no Model para gerar automaticamente as páginas de listagem, detalhamento, criação, edição e exclusão dos dados.
  • Forms: É um sistema que permite criar formulários para coletar e validar os dados dos usuários de forma simples e segura. O Forms usa os modelos definidos no Model para gerar automaticamente os campos e as regras de validação dos formulários. O Forms também permite personalizar os campos, as validações, os widgets, os erros e os estilos dos formulários.
  • Tests: É um sistema que permite criar testes automatizados para verificar o funcionamento e a qualidade da aplicação. O Tests usa o framework unittest do Python para criar testes de unidade, de integração e de funcionalidade. O Tests também permite usar ferramentas externas para medir a cobertura, a performance e a segurança da aplicação.
  • Signals: É um sistema que permite executar ações em resposta a eventos que ocorrem na aplicação. Os Signals são mensagens que são enviadas quando algum modelo é salvo, alterado ou excluído, quando algum usuário é criado, autenticado ou deslogado, quando algum erro ocorre, etc. Os Signals permitem registrar funções ou classes que recebem essas mensagens e executam alguma lógica, como enviar um e-mail, atualizar um cache, gerar um log, etc.

Para entender melhor como esses componentes funcionam na prática, vamos ver um exemplo de uma aplicação Django simples que permite cadastrar e listar livros.

4. Criar uma aplicação Django simples

Uma das vantagens do Django é que ele permite criar aplicações modulares e reutilizáveis. Cada aplicação é um conjunto de arquivos que contém os modelos, as views, os templates, os forms, os tests e outros recursos relacionados a uma funcionalidade específica da aplicação geral.

Para criar uma aplicação Django, você precisa seguir alguns passos:

  • Criar a pasta da aplicação com o comando `python manage.py startapp books`. Isso vai criar uma pasta chamada books na sua pasta do projeto, com alguns arquivos e subpastas.
  • Registrar a aplicação no arquivo settings.py do projeto. Para isso, adicione o nome da aplicação na lista INSTALLED_APPS. Por exemplo: `INSTALLED_APPS = ['books', 'django.contrib.admin', ...]`.
  • Criar o modelo da aplicação no arquivo models.py da pasta books. Para isso, defina uma classe que herda de models.Model e defina os atributos que correspondem às colunas da tabela do banco de dados. Por exemplo:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    year = models.IntegerField()
    genre = models.CharField(max_length=20)

    def __str__(self):
        return self.title

  • Criar o banco de dados da aplicação com o comando `python manage.py makemigrations books`. Isso vai gerar um arquivo na pasta migrations da pasta books, que contém as instruções SQL para criar a tabela do modelo Book.
  • Aplicar as migrações no banco de dados com o comando `python manage.py migrate`. Isso vai executar as instruções SQL no banco de dados e criar efetivamente a tabela do modelo Book.
  • Criar a interface administrativa da aplicação no arquivo admin.py da pasta books. Para isso, importe o modelo Book e registre-o com o comando: `admin.site.register(Book)`. Isso vai permitir que você gerencie os livros pelo site de administração do Django.
  • Criar as views da aplicação no arquivo views.py da pasta books. Para isso, defina as funções ou classes que vão receber as requisições dos usuários e retornem as respostas. Por exemplo:

from django.shortcuts import render
from .models import Book

def index(request):
    # Retorna a página inicial com todos os livros
    books = Book.objects.all()
    context = {'books': books}
    return render(request, 'books/index.html', context)

def detail(request, book_id):
    # Retorna a página de detalhes de um livro
    book = Book.objects.get(id=book_id)
    context = {'book': book}
    return render(request, 'books/detail.html', context)

  • Criar as URLs da aplicação no arquivo urls.py da pasta books. Para isso, importe as views e defina as rotas que vão mapear cada requisição para a view correspondente. Por exemplo:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('<int:book_id>/', views.detail, name='detail'),
]

  • Incluir as URLs da aplicação no arquivo urls.py do projeto. Para isso, importe o módulo include e adicione uma rota que vai redirecionar as requisições para a aplicação books. Por exemplo:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('books/', include('books.urls')),
]

  • Criar os templates da aplicação na pasta templates da pasta books. Para isso, crie os arquivos HTML que vão conter os elementos visuais da interface, usando as tags e filtros do Django para inserir dados dinâmicos. Por exemplo:

<!-- books/index.html -->
<h1>Lista de livros</h1>
<ul>
{% for book in books %}
    <li><a href="{% url 'detail' book.id %}">{{ book.title }}</a></li>
{% endfor %}
</ul>

<!-- books/detail.html -->
<h1>Detalhes do livro</h1>
<p>Título: {{ book.title }}</p>
<p>Autor: {{ book.author }}</p>
<p>Ano: {{ book.year }}</p>
<p>Gênero: {{ book.genre }}</p>
<a href="{% url 'index' %}">Voltar</a>


Pronto! Agora você tem uma aplicação Django simples que permite cadastrar e listar livros. Você pode testá-la acessando as URLs:

  • http://localhost:8000/admin/ - Para acessar o site de administração do Django e gerenciar os livros. Você precisa criar um usuário administrador com o comando `python manage.py createsuperuser` e informar um nome de usuário, um e-mail e uma senha.
  • http://localhost:8000/books/ - Para acessar a página inicial da aplicação e ver todos os livros cadastrados.
  • http://localhost:8000/books/1/ - Para acessar a página de detalhes de um livro específico, substituindo o 1 pelo id do livro desejado.

5. Aprofundar os conhecimentos e as habilidades em Django

O exemplo anterior é apenas uma introdução ao Django e mostra apenas alguns dos recursos básicos do framework. Para se tornar um desenvolvedor backend usando Django, é preciso aprofundar os conhecimentos e as habilidades em diversos aspectos, tais como:

  • Como criar modelos mais complexos, usando campos personalizados, validações customizadas, métodos especiais, propriedades, sinais, etc.
  • Como criar views mais sofisticadas, usando classes baseadas em views, mixins, decoradores, exceções, etc.
  • Como criar templates mais ricos, usando blocos, herança, inclusão, tags personalizadas, filtros customizados, etc.
  • Como criar forms mais avançados, usando modelos baseados em forms, campos personalizados, validações customizadas, widgets customizados, etc.
  • Como criar tests mais abrangentes, usando testes de unidade, de integração e de funcionalidade, fixtures, mocks, etc.
  • Como usar outros recursos do Django como internacionalização, cache, sessões, cookies, CSRF, middleware, logging, etc.
  • Como usar bibliotecas externas que complementam o Django, como Django REST Framework (para criar APIs RESTful), Django Allauth (para autenticação social), Django Crispy Forms (para estilizar formulários), etc.
  • Como implantar e hospedar uma aplicação Django em um servidor web real, usando ferramentas como Git (para versionamento de código), Heroku (para hospedagem na nuvem), Gunicorn (para servidor web), Nginx (para proxy reverso), PostgreSQL (para banco de dados), etc.

Para aprofundar os conhecimentos e as habilidades em Django, existem diversos recursos disponíveis online. Alguns exemplos são:

Conclusão

Neste artigo, vimos como se tornar um desenvolvedor backend em 2023 usando Django. Vimos o que é o desenvolvimento backend, o que é o Django, como instalar e configurar o ambiente de desenvolvimento, como entender a estrutura e o funcionamento do Django, como criar uma aplicação Django simples e como aprofundar os conhecimentos e as habilidades em Django.

O Django é um framework web poderoso, flexível e divertido de usar. Com ele, você pode criar aplicações web incríveis, desde blogs e lojas virtuais até redes sociais e plataformas de aprendizado. O Django também é uma ótima forma de aprender Python, uma das linguagens mais populares e versáteis da atualidade.

Espero que este artigo tenha sido útil e inspirador para você. Se você gostou, compartilhe com seus amigos e deixe um comentário. Se você tiver alguma dúvida ou sugestão, fique à vontade para entrar em contato. Obrigado pela leitura e até a próxima!

Referências Bibliográficas

DJANGO. Site oficial. Disponível em: https://www.djangoproject.com/

PYTHON. Site oficial. Disponível em: https://www.python.org/

PYCHARM. Site oficial. Disponível em: https://www.jetbrains.com/pycharm/.

WIKIPEDIA. Desenvolvimento web. Disponível em: https://pt.wikipedia.org/wiki/Desenvolvimento_web

WIKIPEDIA. MVC. Disponível em: https://pt.wikipedia.org/wiki/MVC

💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.