Hello World com Django
- #Django
- #Python
Introdução
Eu sei que você já ouviu falar desse belíssimo framework e tenha tido no mínimo uma curiosidadezinha
para entender como ele realmente funciona. Nesse post nós iremos partir do absoluto ZERO.
Requisitos
Definiremos os requisitos, mas antes de você começar a suar as mãos achando que talvez você não seja apto, calma! Os requisitos são para o seu computador e ambiente de desenvolvimento!
1º Preparar nosso ambiente de desenvolvimento:
- Aqui nós simplesmente vamos fazer o que normalmente fazemos em cada projeto Python! Vamos criar um diretório principal e criarmos o nosso Ambiente Virtual. Para isso, esteja no diretório que você quer iniciar o seu projeto e no terminal digite:
python -m venv env
Feito isso, basta dar:
Linux
source ./env/bin/activate
Windows
./env/bin/activate.ps1
2º Instalar o Django nesse novo Ambiente Virtual
- Aqui nós iremos fazer a instalação de django através do gerenciador de pacotes do python
pip
. Basta digitarmos no terminal:
pip install django
3º Iniciarmos um Projeto Django
- Vamos então dar inicio ao nosso novo projeto em Django, o primeiro de muitos! Basta no mesmo terminal digitar:
django-admin startproject nome_do_projeto .
Agora, o Django deve ter criado uma estrutura parecida com essa abaixo:
nome_do_projeto/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
manage.py
E você está a um passo de dar início ao desenvolvimento Web, mas ainda temos algumas pendências, configurações que precisamos fazer.
Iniciando o primeiro Aplicativo
Espera, mas nós já não tínhamos feito o nosso aplicativo no passo anterior?
Na verdade não
! O que nós fizemos anteriormente é a criação de um projeto. Um projeto em Django nada mais é do que um amontoado de configurações e aplicativo. Entenda que com Django você pode ter várias aplicações rodando em um mesmo projeto e essa é a beleza da coisa! Na própria documentação do Django há essa explicação e eu vou deixá-la para que você possa entender melhor!
Diferença entre app x projeto -> Qual é a diferença entre um projeto e um aplicativo? Um aplicativo é um aplicativo da web que faz algo – por exemplo, um sistema de blog, um banco de dados de registros públicos ou um pequeno aplicativo de pesquisa. Um projeto é uma coleção de configurações e aplicativos para um determinado site. Um projeto pode conter vários aplicativos. Um aplicativo pode estar em vários projetos.
Agora que estamos entendido entre a diferença de app x projeto nós iremos então finalmente dar inicio a nossa aplicação. Precisamos entender que nossa aplicação tem que possuir um diretório no mesmo local que o arquivo manage.py
python manage.py startapp nome_app
Feito o comando agora nós temos algo bem interessante aqui. Temos uma estrutura completa de um projeto e outra estrutura completa de nosso aplicativo. A documentação recomenda alguns passos antes de fazer o que iremos. Mas eu acredito que seja fundamental que a cada novo aplicativo você faça isso. Vá para a pasta do seu nome_do_projeto/settings.py
e procure pela variável INSTALLED_APPS
. Nela você vai adicionar a seguinte str
:
INSTALLED_APPS = [
"**nome_app**",
'django.contrib.admin',
...
]
E agora fizemos então a integração do nosso app ao nosso projeto! Quero que toda vez que você dar um startapp
você volte e faça isso!
Criando a primeira view
É importante entendermos que cada URL que o usuário acessar ele precisa ver algo não é? Talvez apresentar uma imagem, um post de blog ou quem sabe nós queiramos apenas deixar uma mensagem para algum visitante daquela URL. Na view, nós vamos definir o que acontecerá quando o usuário acessar uma determinada URL. Aqui eu não quero que você se preocupe em como será a sua URL, apenas no que aparecerá ao usuário.
Partindo dessa lógica, vamos abrir o arquivo nome_app/views.py
e vamos criar fazer o seguinte import:
from django.shortcuts import render, HttpResponse
E logo em seguida vamos criar uma função chamada index que vai retornar um HttpResponse
def index(request):
return HttpResponse("Olá, Mundo!")
Pronto, criamos nossa view! E agora, como eu consigo que meu usuário veja essa view?
Criando URLs dos aplicativos e das views
Aqui há um ponto muito importante a ser feito! É a criação das nossas URLS e você precisa separar esse processo em duas etapas:
1º Criando a URL do nosso app
Cada app precisa ter uma url própria! E para isso precisamos ir em nome_do_projeto/urls.py
e inserir dois novos elemento:
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path("nome_app", include("nome_app.urls", namespace="nome_app"))
]
Com isso nós fizemos a integração do nosso aplicativo ao nosso projeto e agora todas as urls de nosso aplicativo terão um .../nome_app/...
. Isso é importante tendo em vista que nós queremos que cada aplicativo seja único e diferenciável! Isso ajuda até mesmo no clean code e futuros debugs.
2º Criando a URL para nossa primeira view
Lembra que nós criamos a primeira view mas eu te pedi para não se preocupar em como o usuário acessasse aquela view? Agora eu vou te pedir o oposto! Vamos criar então um endereço único para essa view a fim de aprendizagem, e claro, para que você possa realmente dizer: EU CRIEI O MEU PRIMEIRO SITE COM DJANGO. Para isso, basta criar um arquivo na raiz do seu nome_app chamado urls.py
. Dentro do seu arquivo escreva:
from django.urls import path
from . import views
app_name = "nome_app"
urlpatterns = [
path("/index", views.index, name="index")
]
E agora pronto! Tudo conectado e perfeitamente solidificado! Você criou o seu primeiro site com Django e tem uma rota única para acessar um Olá Mundo
Basta digitar no terminal:
python manage.py runserver
Feito isso, clique no link gerado pelo seu terminal e acrescente:
Ex:
http://127.0.0.1:8000/nome_app/index
Foi capaz de ver o seu Hello World? Então meus parabéns! Daqui para frente, você só tem a crescer! Há muito mais coisas e possibilidades que você pode e deve fazer! Mas eu espero ter ajudado!
Se quer mais tutoriais básicos ou até mesmo avançados, deixe seu comentário que podemos prosseguir com o nosso projeto e quem sabe criar uma grande aplicação com Django!