Flask Framework

O Flask é um micro-framework que tem muito pouca dependência de bibliotecas externas. É uma estrutura muito leve e nos dá liberdade para fazer o que quisermos.

Neste capítulo, vamos construir um projeto usando o framework Python e Flask.

Inicialização e configuração do frasco

Como a maioria das bibliotecas Python usadas, o pacote Flask pode ser instalado a partir do Python Package Index (PPI). Vamos criar um diretório primeiro (neste capítulo, criamos um diretório chamadoflaskProject), em seguida, criou um ambiente virtual (e o chamou de flaskEnv) onde todas as dependências relacionadas ao projeto serão carregadas (incluindo o frasco). Você também pode instalar o flask-sqlalchemy para que seu aplicativo flask tenha uma maneira simples de se comunicar com o banco de dados SQL.

Depois de instalar o flask, seu flaskEnv (nosso nome de ambiente virtual) mostrará algo como abaixo -

Criação de um aplicativo com flask

Ao instalar o frasco, podemos criar um simples “hello application in flask”Com muito poucas linhas de código da seguinte forma -

Digite o seguinte no terminal -

$python flaskapp.py

E você pode ver a seguinte saída -

Em execução http://127.0.0.1:5000/ ou em localhost:5000

Abaixo está a explicação do que fizemos em nosso código de exemplo -

  • Em primeiro lugar, importamos a biblioteca de classes Flask. Uma instância desta classe é o aplicativo WSGI.

  • Em segundo lugar, criamos uma instância desta classe. O pacote do aplicativo ou nome do módulo é nosso primeiro argumento. É obrigatório que o flask saiba onde encontrar arquivos estáticos, modelos e outros arquivos.

  • A seguir está o decorador route () que usamos para saber qual URL deve acionar nosso método / função.

Criação de roteamento de URL

O roteamento de URL torna as URLs em seu aplicativo da Web fáceis de lembrar. Agora vamos criar algumas rotas de URL -

/hello
/members
/members/name

Podemos escrever o código a seguir com base no URL acima e salvá-lo como app.py.

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
   return "Index!"
	
@app.route('/Hello')
def hello():
   return "Hello, World!"
	
@app.route("/members")
def members():
   return "Members"
	
@app.route("/members/<name>/")
def getMember(name):
   return name
	
if __name__ == '__main__':
   app.run(debug=True)
Ao reiniciar o aplicativo, usamos as linhas de código abaixo para obter diferentes resultados em vários URLs -

$ python app.py

Running on http://localhost:5000/

Obteremos a seguinte saída em nosso navegador -

Podemos tentar outros URLs em nosso navegador da seguinte maneira -

Running on http://localhost:5000/hello, will give the following output −

Running on http://localhost:5000/members, will give −

Running on http://localhost:5000/members/TutorialsPoint/, will give you the following output −

Mas normalmente não queremos retornar uma string (como acima), retornamos modelos. Para isso, queremos usar uma função “render_template”Do flask e retornar render_template com alguma entrada. Então, a função abaixo fará nosso trabalho -

from flask import render_template
return render_template(‘home.html’)

Vamos criar um modelo de pasta e colocar o arquivo home.html nele.

A seguir, discutiremos sobre layout. Em vez de usar a tag head e a tag body em html para cada template, iremos projetar um layout para incluir as tags head & body e envolver as visualizações atuais ou template atual. Para isso, temos que criar um arquivo separado e chamá-lolayout.html. Nela, podemos colocar nossa tag normal de cabeça, tag de corpo e todas as outras tags necessárias.

Podemos criar nosso novo layout.html com as seguintes linhas de código -

<!DOCTYPE html>
<html>
   <head>
      <meta charset="utf-8">
      <title>MyFlaskApp</title>
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
   </head>
   <body>
      {% include 'includes/_navbar.html' %}
      <div class="container">
      {% block body %}
      {% endblock %}
      </div>
      <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js">
      </script>
   </body>
</html>

No código acima, fornecemos a faixa de título, MyFlaskAp, use css cdn no cabeçalho e javascript no bloco do corpo para habilitar o bootstrap.

Agora, temos que criar navbar para cada página. Para isso, primeiro temos que criar uma pasta de inclusão e, em seguida, criar o arquivo _navbar.html dentro dela. Agora no _navbar.html, temos que usar o modelo inicial padrão de getbootstrap.com. O arquivo _navbar.html recém-criado será o seguinte -

E inclua este arquivo _navbar.html em nosso arquivo layout.html.

{% include 'includes/_navbar.html' %}

Como temos o bloco de layout, podemos estendê-lo em nosso arquivo inicial (home.html).

Nosso arquivo home.html pode ser criado usando o código abaixo -

{% extends 'layout.html' %}
{% block body %}
   <div class="jumbotron text-center">
      <h1>Welcome to FlaskApp</h1>
      <p>This application is built on Flask webframework!</p>
   </div>
{% endblock %}

Usando isso, se tentarmos executar nosso arquivo flaskapp.py, poderemos ver a saída abaixo em nosso navegador -

Agora queremos ativar (atualmente as guias não estão funcionando) nosso aboutaba. Crie uma rota para a guia Sobre e crie um arquivo de modelo,about.html.

Sobre a rota da guia em appflask.py será como mostrado abaixo -

arquivo about.html terá o conteúdo abaixo -

Portanto, Home e About estão agora resolvidos. Para artigos, podemos criar um novo arquivo (data.py) no diretório raiz, onde colocamos os dados e chamamos em nossa página web.

data.py

def Articles():
   articles = [
      {
         'uid': 1,
         'title': 'Article_One',
         'body': 'Flask, being a microframework, often requires some repetitive step
            to get a third party library working. Because very often these steps could 
            be abstracted to support multiple projects the Flask Extension Registry 
            was created.',
         'Author': 'Rajesh Joshi',
         'Created-on': '07-09-2018'
      },
      {
         'uid': 2,
         'title': 'Article_Two',
         'body': "Flask, being a microframework, often requires some repetitive steps
            to get a third party library working. Because very often these steps could 
            be abstracted to support multiple projects the Flask Extension Registry 
            was created.",
         'Author': 'Rajesh J',
         'Created-on': '07-09-2018'
      },
      {
         'uid': 3,
         'title': 'Article_Three',
         'body': 'Flask, being a microframework, often requires some repetitive steps
            to get a third party library working. Because very often these steps could be
            abstracted to support multiple projects the Flask Extension Registry 
            was created.',
         'Author': 'Joshi Rajesh',
         'Created-on': '07-09-2018'
      }
   ]
   return articles

Abaixo está o código para articles.html, que exibirá os títulos dos artigos para cada uid.

{% extends 'layout.html' %}
{% block body %}
   <h1>Articles</h1>
   {% for article in articles %}
      <li class="list-group-item">
         <a href="article/{{article.uid}}"> {{article.title}}</a>
      </li>
   {% endfor %}
{% endblock %}

Para resumir, o Flask é uma das estruturas da web python mais populares por causa de sua leveza. Embora seja micro, é uma estrutura web extensível em Python. Ao fornecer a funcionalidade necessária, o flask acelera o desenvolvimento de aplicativos da web simples. Portanto, o Flask é mais adequado para aplicações menores e menos complicadas.