Esse é um post é um breve tutorial de como usar o flask para fazer seu sites e projetos utilizando python.

A primeira coisa a se fazer é instalar o Flask.

pip install flask

Segue abaixo a estrutura mínima para uma aplicação em Flask.

#!/usr/bin/python

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello Flask!"

if __name__ == '__main__':
    app.run(debug=True)

Você pode jogar esse código em um arquivo chamado run.py, esse será o arquivo principal da sua aplicação em Flask, pois é ele que vamos executar e ele será responsável por chamar os próximos.

Entendendo um pouco do código.

app = Flask(__name__)

Na linha acima é instanciado um objeto da classe Flask, é ele que vamos utilizar para configurar a nossa aplicação e para executa-la com o servidor de testes do próprio Flask.

@app.route("/")

É um decorator responsável por interpretar a rota que acessamos, então assim que é acessada a url / como é configurado na linha acima, a função que está abaixo é responsável por enviar uma rota ao navegador.

def index():
    return "Hello Flask!"

É a função que tem como objetivo retornar somente um texto plano como Hello Flask.

if __name__ == '__main__':
    app.run(debug=True)

Essas instruções definem que quando o run.py for executado via linha de comando, o Flask deverá iniciar o seu servidor interno para executar a aplicação, como no construtor foi passado o valor True para a chave debug, o servidor será iniciado no modo debug, assim quando forem feitas modificações no código e elas forem salvas o servidor irá reiniciar automaticamente para que você possa testar o novo código.

Esse é o código mais básico que se pode ter em Flask.

Para acessar a sua aplicação, você pode acessar o endereço:

http://localhost:5000

5000 é a porta padrão do Flask, você pode muda-la passando o parâmetro port no contrutor, deixando ele da seguinte forma:

if __name__ == '__main__':
    app.run(debug=True,port=6543)

Normalmente não retornamos um texto plano para o navegador e sim uma responsta em HTML, JSON ou até mesmo XML em caso de Webservices SOAP.

Para retornar um tipo JSON para o navegador, é necessário fazer o import do módulo jsonify do Flask.

Para isso logo após o import do Flask coloque uma vírgula e digite jsonify, ficando assim da seguinte forma:

from flask import Flask,jsonify

Esse recurso do Flask recebe como parâmetro um dicionário que será automaticamente convertido como JSON.

Assim mude a função index para ficar da seguinte maneira:

@app.route("/")
def index():
    return jsonify({"message":"Hello Json!"})

Salve o arquivo e veja que o servidor do Flask será reiniciado automaticamente, então acesse o navegador e veja como ficou

Agora caso você queira retornar uma página em HTML, você precisará fazer o import do módulo render_template do próprio Flask, isso é feito da mesma maneira em que foi feito o jsonify.

from flask import Flask,render_template

Por padrão o Flask irá olhar o diretório template na mesmo diretório onde você está executando o arquivo run.py.

Então crie uma pasta template e dentro dela crie um página chamada index.html

Dentro dela você pode colocar o seguinte código:


Pagina HTML e Flask

Salve o código.

Agora vamos voltar para o python.

Na função onde você editou o return para jsonify, mude-o agora para render_template e coloque como valor index.html.

O código ficará assim:

@app.route("/")
def index():
    return render_template("index.html")

Como o Flask já imagina que o arquivo html foi colocado dentro de templates, não é necessário passar o caminho completo do arquivo.

Salve o arquivo e teste no navegador novamente.

O Flask trabalha com uma linguagem de template chamada Jinja2, ela serve para que possamos gerar o nosso arquivo HTML de forma dinâmica, assim é possível passar variáveis com valores no retorno da função e interpreta-los através do Jinja2.

Edite a função index deixando ela conforme o exemplo abaixo:

@app.route("/")
def index():
    nome = "Alisson"
    posts = ["Flask Basico","Flask Intermediario","Flask Avancado"]
    return render_template("index.html",nome=nome,posts=posts)

Talvez esse return tenha ficado um pouco confuso pois usei variáveis com o mesmo nome para os parâmetros chave/valor.

Após a definição de qual será a página html renderizada pelo Flask, é possível passar variáveis do tipo dicionário como parâmetros para que elas possam ser utilizadas no nosso arquivo html.

Explicando melhor, quando vemos: nome=nome, isso significa que nome o primeiro, antes do sinal de igual, é a chave de um dicionário.

Então ele pode ser entendido da seguinte forma:

{"nome":}

O segundo nome, depois do sinal de igual é a variável nome declarada dentro da função, que tem o valor Alisson, assim o nosso dicionário ficou da seguinte forma:

{"nome":nome}

Caso eu queira traduzir interpretar o código ele ficou assim:

{"nome":"Alisson"}

E isso será retornado para que o Jinja2 possa utilizar e depois gerar o HTML.

A mesma coisa serve para a variável posts, porém no caso ela é uma lista e não uma string como no caso de nome.

Feito isso, salve o arquivo e agora edite o index.html, deixando ele da seguinte forma:

Blog do {{nome}}

Posts Recentes

      {% for post in posts %}
    • {{post}}
    • {% endfor %}

Salve o HTML também e teste no navegador.

Você verá que as variáveis foram substuídas pelos valores no código, o Jinja2 entende os dicionários que foram passados através da função render_template e pode trazer os valores para o HTML.

Quando temos dicionários simples, como no caso de:

{"nome":"Alisson"}

Você pode chamar a chave nome dentro do html entre esses caracteres {{ variavel }}, assim quando o html for carregado irá trazer o valor que corresponde a essa chave.

No caso da lista foi necessário efetuar um laço for para percorrer a lista em python e gerar uma lista em HTML.

No Jinja2 é possível fazer condições utilizando ifs e loopings utilizando for e while.

Caso vocẽ queira saber mais sobre o Jinja2 é só acessar a documentação oficial:

http://jinja.pocoo.org/docs/dev/

Para saber mais sobre o Flask, você pode consultar a documentação oficial também:

http://flask.pocoo.org/

Mas vou fazer mais alguns posts explicando como eu utilizo o Flask no meu dia a dia e ensinando vocês a utilizarem também.

Até mais.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *