Hello World com Django
Tags: python, django
Published: 2023-05-12 13:58:24

# 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
python -m venv env
``` 
  
Feito isso, basta dar:

> Linux

```python
source ./env/bin/activate
``` 

> Windows

```python
./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:

```python
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:

```python
django-admin startproject nome_do_projeto .
``` 
Agora, o Django deve ter criado uma estrutura parecida com essa abaixo:

```python
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 -> ](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.)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
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`:

```python
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:

```python
from django.shortcuts import render, HttpResponse
```

E logo em seguida vamos criar uma função chamada index que vai retornar um HttpResponse

```python
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:
 
```python
from django.urls import path, include
```

```python
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:

```python
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
python manage.py runserver
```

Feito isso, clique no link gerado pelo seu terminal e acrescente:

Ex:

```python
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!

# Até logo!!!!!!