DEV Community

Cover image for Django: Explorando o Framework com um Exemplo Prático - Parte 1
Felps
Felps

Posted on

Django: Explorando o Framework com um Exemplo Prático - Parte 1

Já faz MUITO tempo, que tenho vontade de compartilhar experiências e aprendizados através conteúdo escrito. Este é o meu primeiro post e espero que goste!

Trarei uma série de postagens educacionais onde explorarei funcionalidades do Django. Se tiverem sugestões e/ou dúvidas, estou 100% à disposição para conversarmos.


O que é o Django?

Sem entrar em muitos detalhes e irmos direto a prática, a autodefinição traduzida pela própria documentação diz o seguinte:

Django é um framework web em Python de alto nível que incentiva o desenvolvimento rápido e um design limpo e pragmático. Desenvolvido por programadores experientes, ele lida com grande parte das complexidades do desenvolvimento web, permitindo que você se concentre na escrita de sua aplicação sem precisar reinventar a roda. É gratuito e de código aberto.

E, para tentar te convencer sobre sua importância, você pode checar a listagem de frameworks web Python mais utilizados em 2022.


Quais os objetivos deste post?

  • Mostrar como podemos iniciar um projeto com o framework.
  • Compreender a estrutura inicial de um projeto Django.

Introdução

Vamos começar com um projeto que pretende ser um sistema de agendamentos, algo similar à uma agenda, mas que posteriormente adicionaremos controle de pagamentos e outras funcionalidades.

Entretanto, para alinhamento de expectativas, no final desta postagem ainda não teremos feito nada do que foi proposto, apenas preparado o projeto para o desenvolvimento.

Antes de mais nada, crie a pasta onde vai colocar o projeto e já inicie o ambiente virtual (venv). A partir de agora sempre assumirei que o ambiente virtual iniciado está ativo, ok?

Faça a instalação do Django através do comando pip install django.

Ao finalizar você terá acesso ao comando django-admin que possibilita fazer um série de subcomandos, veja abaixo:

Subcomandos do django-admin

O comando que utilizaremos, inicialmente, aqui é o: startproject.

Passaremos dois argumentos adicionais: o primeiro será o nome da pasta que guardará os arquivos de configuração do projeto e o segundo será o local onde queremos criar essa pasta, usaremos um . para indicar que será no diretório atual.

O comando completo fica assim:

django-admin startproject config .

Escolhi o nome config dado que será a pasta que guardará as configurações gerais do meu projeto, e, se você me acompanhou até aqui, terá uma organização parecida com a que é mostrada abaixo:

Arquivos que foram criados até então

Nosso projeto já é executável, faça python3 manage.py runserver no terminal e acesse 127.0.0.1:8000, veja o que te aguarda abaixo:

Página inicial do projeto funcionando


Entendendo os urls.py e settings.py

O arquivo urls.py representa a configuração de rotas do seu projeto Django, dentro da variável urlpatterns guardamos os caminhos e como lidaremos com aquele caminho (view). Podemos colocar uma classe, uma função, ou até mesmo inserir um outro arquivo de configuração de rotas.

Por enquanto, não vamos inserir nada nesse arquivo, mas observe que na linha 21 já há uma rota implementada.

Rota /admin já implementada

Se tentarmos acessar a rota 127.0.0.1:8000/admin, caímos então no que chamamos de painel de administração do Django.

Painel de administração do Django

Na próximo post desta série falaremos mais sobre o painel de administração, antes, vamos entender o settings.py. Nesse arquivo encontramos diversas configurações do projeto, citarei algumas delas aqui:

  • SECRET_KEY: Variável que é usada para criptografia que já existe no projeto.
  • DEBUG: Variável que indica se o projeto está em desenvolvimento ou produção.
  • ALLOWED_HOSTS: Variável que contém domínios permitidos (uma segurança contra ataques CSRF.
  • INSTALLED_APPS: Variável que contém os apps instalados em seu projeto.
  • MIDDLEWARE: Variável que contém os middlewares instalados em seu projeto.
  • ROOT_URLCONF: Variável que contém o arquivo de configuração de rotas do projeto.
  • TEMPLATES: Variável que contém a configuração de uso de templates do projeto.
  • DATABASES: Variável que contém a configuração de uso de banco de dados do projeto.
  • LANGUAGE_CODE: Idioma do projeto.
  • TIMEZONE: Fuso horário a ser considerado pelo projeto.

Tenho certeza que algumas das configurações que citei ainda não estão completamente nítidas para você, mas não se preocupe. Trarei mais detalhes à medida que precisarmos.

Enquanto isso, veja como é interessante, mude o valor de LANGUAGE_CODE para pt-br e de TIMEZONE para America/Sao_Paulo. Salve o código. Veja como no terminal agora temos um horário diferente do que era mostrado antes (Agora seguindo o fuso horário de Brasília) e ao acessar o painel de administração de novo, veja que está em português. 🤯

Painel de administração, agora em português


O banco de dados do Django

A configuração padrão para banco de dados do Django usa o SQLite, um banco de dados relacional em arquivo. Se essa configuração for mantida, ao executar o projeto, surgirá o arquivo db.sqlite3.

Arquivo db.sqlite3 no projeto

Com o auxílio de uma extensão do VSCode podemos inspecionar as tabelas do banco, que, no nosso caso, ainda não existem.

Tabelas do arquivo db.sqlite3

Você pode ter notado no terminal que uma mensagem em vermelho acompanha o terminal desde que subimos o projeto pela primeira vez.

Mensagem sobre migrações a serem aplicadas

Essa mensagem mostra que o Django tem alterações à serem feitas no banco de dados e que ainda não foram aplicadas. Para fazer isso, execute o comando python3 manage.py migrate.

Agora, se inspecionamos o arquivo do banco novamente:

Banco de dados com as tabelas atualizadas

Todas essas tabelas que estão dentro do banco são usadas pelo próprio Django para lidar com o sistema de usuários, grupos, permissões, sessões e até mesmo as próprias migrações que são aplicadas no banco.

Podemos inserir um novo registro no banco de dados criando um superuser através do comando python3 manage.py createsuperuser e interagindo no próprio terminal com os dados que são pedidos.

Criação de um  raw `superuser` endraw

Ao inspecionar a tabela auth_user no banco de dados temos agora um registro. (Caso não tenha aparecido para você, basta clicar no símbolo de atualizar logo acima das tabelas)

Novo registro no banco

Com esse acesso criado, você pode agora fazer login no painel de administração do Django!

Dentro do painel de administração do Django

Agora, basta clicar em Grupos ou Usuários para conseguir visualizar, filtrar, pesquisar, adicionar, atualizar ou deletar registros referentes à cada uma desses modelos.

No próximo post, faremos a configuração do primeiro app que implementaremos. Nele, teremos um modelo e com ele você entenderá como melhorar a usabilidade do painel de administração para suas próprias implementações.

Top comments (0)