
Criando sua primeira Aplicação com Django
Começarei a fazer algumas revisões bibliográficas com o intuito de estudar certos tópicos de interesse, mas qual a diferença desse blog para outros blogs ? Bem não vou tentar reinventar a roda, como é um artigo baseado na documentação do Django, todo artigo sério que se baseia nela será parecido, ainda bem que esse daqui não é sério. Além disso, também documentar o que eu tenho feito, afinal preciso garantir meu emprego no futuro, não é mesmo ? Atualmente eu estou estudando um Framework de desenvolvimento web baseado em Python, o famoso Django. Sendo assim, vamos fazer um pequeno overview de como criar uma aplicação web com Django, claro que será feito em um local host (afobado esse André, né ?) mas ainda sim, esse framework torna a produção dessas aplicações extremamente simples e rápida. O primeiro passo para iniciar com o Django é nada mais nada menos que baixar o framework, mas eu não recomendo instalar direto na sua máquina, para isso iremos criar um ambiente virtual, ainda bem que o nosso grande amigo python nos fornece boas opções para isso, usaremos uma biblioteca chamada virtualenv do Python, isolando o nosso projeto e evitando conflito com qualquer coisa externa. Para fazer a instalação da biblioteca usaremos um gerenciador de pacotes, se o sistema for o linux (como é o meu caso) é utilizado o seguinte comando :
sudo apt install virtualenv
Mas se você estiver usando o windows, é possível usar o próprio gerenciador de pacotes do Python para fazer a instalação, o pip (se você estiver usando o power shell):
pip install virtualenv
Agora podemos criar nosso ambiente virtual! Não é tão complicado quanto parece, usaremos alguns comandos, são esses :
python3 -m virtualenv .venv
Vamos rapidamente destrinchar o que está acontecendo aqui, afinal eu quero que você entenda o que está fazendo e não apenas replique.
- Quando colocamos python3, estamos indicando que usaremos o interpretador do python, no caso como estamos usando a versão 3 do python é usado o python3.
- O -m indica ao interpretador que ele precisa executar esse módulo como um script, nesse caso, ao rodar o módulo como um script estaremos criando o nosso ambiente virtual.
- O virtualenv nada mais é do que a biblioteca que estamos utilizando para criar o ambiente virtual
- O .venv é o nome do nosso ambiente virtual, esse é padrão utilizado
Pronto, agora que você sabe o que cada coisa significa, podemos prosseguir.
Agora vamos aprender a ativar nosso ambiente virtual, eu sei que você quer ir direto pro Django, mas é de extrema importância que você mantenha seus projetos isolados, pois isso evita conflitos, não é raro ter mais de um projeto em uma máquina, porém com diferentes versões do Python ou do Django, se não houver uma organização e controle dos projetos é caos na certa.
Para ativar a venv, usaremos um comando que é diferente no windows e no linux, no caso do linux, o comando será :
source .venv/bin/activate
O windows é semelhante, porém o caminho do script é diferente, basta colocar o comando .\env_name\Scripts\activate
.
Caso ainda haja dúvidas, fica aqui a documentação da biblioteca.
OBS: Para saber se a venv está ativa mesmo, basta ver se o nome venv aparece do lado do nome da máquina. Assim :
Agora eu vou te mostrar a forma fácil de fazer isso e não ter que ficar ativando o tempo todo o ambiente virtual (você pode estar se questionando, por que não mostrar essa forma logo de cara ? Simples, se eu mostrasse você não iria saber que existe essa forma 😁)
Se você está usando o vscode, ele possui uma função para você escolher o interpretador python que você deseja usar, caso você tenha mais de uma versão instalada, acredite é bem comum, usando o atalho
ctrl + shift + p
podemos escolher o interpretador que desejamos, a sacada está que você pode escolher a venv como um interpretador, afinal temos uma ambiente isolado com uma versão específica do Python, facilitando muito nossa vida no decorrer do processo.
Agora, toda vez que abrirmos o terminal, nosso ambiente virtual já estará ativo, bem mais fácil não ?
Agora a tão esperada hora, vamos instalar o django! Agora sim, podemos usar o instalador de pacotes do python e será a mesma coisa tanto para windows quanto para Linux.
pip install django
Pronto, agora o django está instalado, vamos então criar uma pasta para o nosso projeto e criar nosso projeto, mas antes é importante frisar que tudo isso está na documentação oficial do framework. Vamos criar uma pasta chamada projeto tutorial e iniciar nosso projeto dentro dela, vamos usar o código :
django-admin startproject config
Novamente, vamos ver o que cada coisa faz aqui :
- O django-admin é nada mais nada menos que um utilitário que o django traz para facilitar tarefas administrativas, de forma simples ele atua de forma semelhante ao settings.py, jaja você vai saber o que é isso, criando toda a base que um projeto django deve ter, mas não se preocupe, podemos sim fuçar nas coisas e mudar conforme as nossas necessidades.
- O startproject é meio autoexplicativo se você sabe inglês, mas se você não sabe, ele literalmente diz : iniciar projeto
- O config será o nome dado a pasta do nosso projeto, eu coloquei config por que ele já está dentro de uma pasta chamada projeto tutorial, mas pode colocar o nome que quiser
Se você está no mundo da tecnologia a algum tempo sabe que uma das coisas que nós garotos de programa mais gostamos é de organização, não é a toa que alguns dos conceitos mais recorrentes na programação é o encapsulamento e modularização das coisas, pois bem, o nosso amigo django segue esse mesmo princípio, podemos modularizar nossa aplicação, em apps (irônico não ?), cada app pode ter uma função específica, por exemplo, vamos criar um sistema de gerenciamento de funcionários, o cadastro de um funcionário pode ser um app, enquanto que outro app pode se relacionar com o gerenciamento desses funcionários, por exemplo para marcar o ponto. O importante aqui é entender que podemos usar essa função de apps para facilitar nossa vida.
Quebrando um pouco aqui o conteúdo só para fazer um breve comentário sobre essa questão dos apps no django, nós podemos criar diferentes apps de forma isolada e colocar eles em diferentes sistemas, ou seja, é possível criar apps isolados e reutilizar eles. Isso é outra coisa que os garotos de programa piram, reusabilidade do código, afinal programar é legal, mas não é interessante ter que ficar refazendo a mesma coisa 300 milhões de vezes.
Prosseguindo com nosso projeto, vamos olhar o que nosso amigo django criou para brincarmos. Temos agora um punhado de arquivos python, cada um deles tem sua importância, mas por hora, vamos delimitar uma meta, fazer um Hello World em uma página web. Para isso, vamos passar por alguns pontos importantes, primeiramente, vamos ver se o projeto está funcionando.Vamos usar esse código dentro da pasta do projeto para fazer com que a nossa aplicação rode localmente:
python manage.py runserver
Depois veremos uma página de debug do django
Agora vamos falar um pouco sobre rotas e URLs, quando você acessa um site na internet já deve ter visto um monte de texto estranho na barrinha de pesquisa lá em cima, né ? Pois bem, isso é uma URL (Uniform Resource Locator), de forma grosseira o endereço de uma página web, mas para que serve essa informação para produzir aplicações django ? Simples, o django usa uma coisa chamada rotas para relacionar URLs com funções em python, são essas funções que fazem a magia acontecer, com elas o django recebe requisições HTTP (Um protocolo de comunicação de redes, que funciona por meio de request e response, sendo assim a máquina envia um request para o servidor e ele envia um response, esse response pode ser várias coisas, para entender mais a fundo recomendo a leitura dessa documentação feita pela Mozilla) e dá um retorno. Mas como fazemos isso na prática ? Primeiro vamos finalizar nosso servidor local, com
ctrl + c
no terminal, então usaremos um comando para criar um app :
python manage.py startapp core
Depois que o app for criado, algumas pastas devem ter sido criadas :
Por meio desses arquivos vamos criar nosso Hello World, vamos primeiro configurar nossa view, mas o que é uma view ? Uma view é exatamente a função que foi citada lá em cima, a função que recebe a requisição, por meio dela vamos configurar o que nossa aplicação vai fazer. Vamos criar uma função chamada index, por que esse nome ? Por que é um padrão chamar as páginas iniciais de index, mas não é obrigatório, fique a vontade para nomeá-la como bem entender (acho que na próxima vou chamar ela de Mestre dos Magos, por que sempre que a gente precisa…essas coisas deixam a gente na mão…).
def index(request):
return
Certo, agora temos uma função que irá receber o request do usuário, mas o que é que ela vai retornar ? Elementar meu pequeno gafanhoto, vamos utilizar nosso querido amigo HTTP para dar essa resposta a ele. Vamos usar uma classe do próprio django, olha só o framework facilitando nossa vida de novo, para fazer esse response. A classe em questão é o Httpresponse, vamos importar ela e colocar nossa função index retornando ela :
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello World!")
Você deve ter visto que eu passei uma string “Hello World!” como parâmetro não é mesmo ? Bem isso será a response que nossa aplicação irá dar ao usuário, ele irá enviar uma página HTML, com esse texto escrito. Bem, agora já temos uma resposta para o usuário…mas a nossa página do django não mudou, por que ? Calma pequeno gafanhoto, ainda temos algumas pontas soltas pra arrumar, primeiro, nossa aplicação precisa saber que esse app existe, então vamos adicionar ele nos INSTALLED_APPS lá no nosso arquivo de configuração :
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'core.apps.CoreConfig'
]
Nosso app possui uma classe em que estão suas configurações, basta adicionar o caminho para essas configurações e pronto, sua aplicação django já sabe que seu app existe. A próxima etapa é criar um endereço para que o usuário acesse nossa página, ou seja, vamos criar um URL para nossa página. Vamos até o arquivo de url na pasta config :
from django.contrib import admin
from django.urls import path
from core.views import index
urlpatterns = [
path('admin/', admin.site.urls),
]
Ele vai ser assim, Se olharmos direitinho podemos ver que já existe uma rota (detalhe, rota em inglês pode ser chamada de path, na real seria algo como caminho, mas deu pra entender né ?) Essa rota é criada automaticamente pelo Django, é uma página para administrar a aplicação, vamos falar mais sobre isso depois, por hora vamos focar no nosso hello world. Para atingir nosso objetivo, vamos criar nossa própria rota, vamos adicioná-la no array urlpatterns :
from django.contrib import admin
from django.urls import path
from core.views import index
urlpatterns = [
path('admin/', admin.site.urls),
path('', index)
]
vamos usar essa mesma função do Django, a função path, para criar nossa URL. O que você deve estar se perguntando é : não tem nada escrito ali, é uma string vazia, como que ele vai achar esse caminho ? Calma pequeno gafanhoto, como não há nada, assim que acessarmos esse “domínio” (Eu sei que não é um domínio, pois não estamos em uma página pública, mas apenas para facilitar a explicação eu decidi usar essa nomenclatura) essa será a primeira página com a qual teremos contado.
Agora…se rodarmos nosso servidor de novo…
Temos nosso tão esperado Hello World…
Muito obrigado você que chegou até aqui, eu espero que essa leitura tenha sido tão proveitosa quanto foi escrevê-la, espero que você tenha aprendido alguma coisa nova até aqui e que eu tenha te ajudado em algo, pretendo escrever mais no futuro e continuar nossa saga no mundo do Django, até a próxima!
foi usado nesse artigo, a seguinte fonte :