Introdução ao Flask: Criando seu Primeiro "Olá Mundo!"
Tags: flask, python, webdev, beginners
Published: 2021-01-03 16:55:15

## O Que é Flask?

Flask é um *micro-framework* especializado em desenvolvimento de aplicações web e de APIs RESTful para a linguagem de programação *Python*. Ser um *micro-framework* significa que o Flask é uma estrutura mais simples e leve que Frameworks comuns, especificamente, o flask somente necessita de duas bibliotecas: a biblioteca `Jinja` e a biblioteca `Werkzeug`.

A biblioteca **Jinja** é uma ferramenta para modificação de templates que é usada em frameworks web de Python como o Django, em outras palavras, com Jinja conseguimos usar variáveis e expressões escritas em Python em arquivos HTML ou XML. Desse modo, você consegue usar linhas de código dentro de um arquivo estático como o HTML que depois são renderizadas e apresentadas juntos aos outros conteúdos do arquivo, tornando o conteúdo da nossa página algo dinâmico.

Já a biblioteca **Werkzeug**, é um conjunto de utilidades e aplicações de um **WSGI** (*Web Server Gateway Interface - Interface de Gateway de Servidor Web*), ou seja, essa biblioteca apresenta aplicações para as maneiras de comunicações de um servidor da Web com aplicativos da Web e como esses podem ser encadeados para processar uma solicitação. Em resumo, essa biblioteca controla as interações entre a internet e nossas aplicações em flask.

## O Que Preciso Para Começar com o Flask?

Para começar com o Flask é indicável que você tenha conhecimento básico de Python, juntamente com conhecimento de HTML, CSS e JavaScript. Além de, obviamente, a instalação do Python e do Flask.

Dito isso, agora instalaremos o flask, como o framework é uma biblioteca python, precisamos instalar o python em nossa máquina antes de usar o flask. Quanto à instalação da biblioteca, usaremos um instalador de pacotes python, como `pip`, e para realizar a instalação, digitaremos o seguinte comando em nosso terminal:

```shell
$ pip install Flask
```

Ao executar esse comando você estará instalando o Flask em toda sua máquina, mas é recomendado que não façamos isso e usemos um ambiente virtual como o `Virtualenv`, mas para evitar quaisquer complicações utilizaremos esse caminho mais simples de instalação.

## Criando Nosso "Olá Mundo!"

Primeiramente, temos que importar a classe Flask da biblioteca flask para o nosso programa:

```python
# Primeiro precisamos importar a Classe Flask da biblioteca Flask que instalamos
from flask import Flask
```

Depois disso, precisaremos criar um objeto da classe Flask. No seu construtor geralmente usamos o termo `__name__`, pois com tal termo o Flask saberá onde procurar arquivos HTML, CSS e outros facilmente.

```python
# Agora criaremos um objeto da classe Flask
app = Flask(__name__)
```

O Flask funciona com um sistema interno de rotas, cada rota representa um endereço do nosso domínio. Imagine que o domínio da nossa página é `olamundo.com.br` uma rota desse endereço pode ser `/olaespecial` que se comporta se juntando ao domínio para representar outro local no nosso site, nesse caso, o local seria `olamundo.com.br/olaespecial`.

Cada rota engatilha o funcionamento de uma função específica (a função localizada imediatamente abaixo da definição da rota) no nosso programa, essa função determinará o que será executado no nosso endereço a partir do seu retorno. Além disso, retorno dessa função é interpretado como HTML e rederizado como um.

Então, criaremos nossas duas primeiras rotas.

```python
"""
Agora definiremos uma rota com o @app.route() o parâmetro dentro dos parênteses
representam um endereço da nossa rota.
Quando usamos somente '/' nos parênteses estamos especificando a rota principal
do nosso site, ou seja só estamos buscando a página referente ao domínio do site
"""
@app.route('/')
def ola_mundo():
    return 'Ola Mundo!'

"""
Agora definiremos uma segunda rota com o @app.route() o parâmetro dentro dos
parênteses representam um endereço de nossa rota. Nesse caso, nossa rota
será dominio.com.br/lisandra
"""
@app.route('/lisandra')
def ola_lisandra():
    # Retornaremos uma tag HTML nesse caso
    return '<h1>Olá Lisandra!</h1>'
```

Agora temos nossa primeira aplicação web pronta para executá-la podemos realizar dois processos. 

#### Primeiro Método de Executar Localmente o Flask

O primeiro método para execução do flash consiste em usar o comando `flask` para executar seu programa, mas antes de utilizá-lo, você deverá dizer para as configurações do flask qual o nome do seu programa.

- Se você está no Linux, pode digitar o seguinte comando no seu terminal:
```shell
$ export FLASK_APP=<nomedoseuprograma>.py
```

- Se você está no Windows, digite no seu prompt de comando a seguinte linha de código:
```
C:\lugar\da\sua\aplicacao>set FLASK_APP=<nomedoseuprograma>.py
```

- Já se você estiver no power shell, digite:
```
PS C:\lugar\da\sua\aplicacao>$env:FLASK_APP = "<nomedoseuprograma>.py"
```

Depois disso, você pode executar o seguinte comando para executar seu programa.

```shell
flask run
```

#### Segundo Método

Outra maneira de executar sua aplicação é adicionando algumas linhas de código a sua aplicação. Primeiro, testaremos se estamos executando esse programa como um programa sozinho ou o importando, caso esteja sendo executado como um programa a variável `__name__` recebe o valor de `__main__`, caso seja importado, não. 

Após isso, iremos usar o método `run()` da classe Flask para executar o nosso programa.

```python
"""
Agora determinaremos que desejamos executar nosso app, para isso usamos o app.run()
poderíamos somente escrever isso no final do nosso programa, mas fazemos um teste
antes esse teste verifica se nossa variável __name__ é igual a '__main__' quando
um arquivo.py é executado por sozinho como um programa, __name__ é definido
como '__main__' logo se executarmos o nosso programa iremos executar o app.run()
"""
if __name__ == "__main__":
    app.run()
```

Depois, para executar seu programa escreva no seu terminal o seguinte comando.

```shell
python <nomedoseuprograma>.py
```

#### Execução

Ao executar o programa em qualquer uma das formas, você verá na sua tela algo como a seguinte saída.

```shell
 * Serving Flask app "ola" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
```

E agora se você acessar o [endereço mostrado na sua saída](http://127.0.0.1:5000/) você verá a seguinte saída:
![Olá Mundo desenvolvido no programa apresentado no navegador](https://dev-to-uploads.s3.amazonaws.com/i/21y458fawtmsvdtv6hwg.png)
*Olá Mundo desenvolvido no programa apresentado no navegador*

Já se você acessar nossa rota '/lisandra' no endereço [http://127.0.0.1:5000/lisandra](http://127.0.0.1:5000/lisandra) você verá a saída "Olá Lisandra!", pois foi o que pedimos no retorno da nossa função.
![Print do retorno ao acessar a segunda rota criada](https://dev-to-uploads.s3.amazonaws.com/i/o172nkutgv6e6gblh3jm.png)
*Print do retorno ao acessar a segunda rota criada*

Perceba que o "Olá Lisandra!" está impresso como um elemento `<h1>`, pois nosso retorno na função da rota `/lisandra` é executado sempre como um conteúdo HTML, então quaisquer tags no retorno serão executadas.

Agora você pode ver seu primeiro site usando Flask em funcionamento!

O programa desenvolvido nesse tutorial está disponível no [meu repositório do gitlab](https://gitlab.com/veronicamars73/introducao-ao-flask-criando-seu-primeiro-ola-mundo).