Professional Documents
Culture Documents
Web Usando Flask em Python 3 - DigitalOcean
Web Usando Flask em Python 3 - DigitalOcean
CONTENTS
Prerequisites
Step 1 — Installing Flask
Step 2 — Creating a Base Application
Step 3 — Using HTML templates
Step 4 — Setting up the Database
Step 5 — Displaying All Posts
Step 6 — Displaying a Single Post
Step 7 — Modifying Posts
Conclusion
R E L AT E D
// Tutorial //
Python 3
O autor selecionou o Free and Open Source Fund para receber uma doação como parte
do programa Write for DOnations .
Introdução
Flask é um framework web Python pequeno e leve que fornece ferramentas e recursos
úteis que facilitam a criação de aplicativos web em Python. Ele oferece flexibilidade aos
desenvolvedores e é uma estrutura mais acessível para novos desenvolvedores, pois
você pode criar um aplicativo da Web rapidamente usando apenas um único arquivo
Python. O Flask também é extensível e não força uma estrutura de diretório específica
ou requer um código clichê complicado antes de começar.
Como parte deste tutorial, você usará o kit de ferramentas Bootstrap para estilizar seu
aplicativo para que ele fique mais visualmente atraente. O Bootstrap ajudará você a
incorporar páginas da Web responsivas em seu aplicativo da Web para que também
funcione bem em navegadores móveis sem escrever seu próprio código HTML, CSS e
JavaScript para atingir esses objetivos. O kit de ferramentas permitirá que você se
concentre em aprender como o Flask funciona.
Flask usa o mecanismo de modelo Jinja para construir páginas HTML dinamicamente
usando conceitos Python familiares, como variáveis, loops, listas e assim por diante.
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 2/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
Nesta etapa, você ativará seu ambiente Python e instalará o Flask usando o
pip instalador de pacotes.
(env)sammy@localhost:$
cópia de
Esse prefixo é uma indicação de que o ambiente env está ativo no momento, que pode
ter outro nome dependendo de como você o nomeou durante a criação.
Observação: você pode usar o Git , um sistema de controle de versão, para gerenciar e
acompanhar com eficácia o processo de desenvolvimento do seu projeto. Para aprender
a usar o Git, confira nosso artigo Introdução ao uso e ramificações da instalação do Git .
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 3/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
Se você estiver usando o Git, é uma boa ideia ignorar o env diretório recém-criado em
seu .gitignore arquivo para evitar o rastreamento de arquivos não relacionados ao
projeto.
Agora você instalará os pacotes Python e isolará o código do seu projeto da instalação
principal do sistema Python. Você fará isso usando pip e python .
Para instalar o Flask, execute o seguinte comando:
(env)sammy@localhost:$ pip install flask
cópia de
Quando a instalação estiver concluída, execute o seguinte comando para confirmar a
instalação:
(env)sammy@localhost:$ python -c "import flask; print(flask.__version__)"
cópia de
Você usa a python interface de linha de comando com a opção -c de executar o código
Python. Em seguida, você importa o flask pacote import flask; e imprime a versão do
Flask, que é fornecida por meio da flask.__version__ variável.
A saída será um número de versão semelhante ao seguinte:
Output
1.1.2
Você criou a pasta do projeto, um ambiente virtual e instalou o Flask. Agora você está
pronto para prosseguir com a configuração de seu aplicativo base.
Etapa 2 — Criando um aplicativo base
Agora que você configurou seu ambiente de programação, começará a usar o Flask.
Nesta etapa, você criará um pequeno aplicativo da Web dentro de um arquivo Python e
o executará para iniciar o servidor, que exibirá algumas informações no navegador.
Em seu flask_blog diretório, abra um arquivo nomeado hello.py para edição, use nano ou
seu editor de texto favorito:
(env)sammy@localhost:$ nano hello.py
cópia de
Este hello.py arquivo servirá como um exemplo mínimo de como lidar com solicitações
HTTP. Dentro dele, você importará o Flask objeto e criará uma função que retornará
uma resposta HTTP. Escreva o seguinte código dentro de hello.py :
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 4/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
frasco_blog/hello.py
from flask import Flask cópia de
app = Flask(__name__)
@app.route('/')
def hello():
No bloco de código anterior, você primeiro importa o Flask objeto do flask pacote. Em
seguida, você o usa para criar sua instância do aplicativo Flask com o nome app . Você
passa a variável especial __name__ que contém o nome do módulo Python atual. Ele é
usado para informar à instância onde está localizada - você precisa disso porque o
Flask configura alguns caminhos nos bastidores.
Depois de criar a app instância, você a usa para lidar com solicitações da Web recebidas
e enviar respostas ao usuário. @app.route é um decorador que transforma uma função
Python regular em uma função de visualização Flask , que converte o valor de retorno
da função em uma resposta HTTP a ser exibida por um cliente HTTP, como um
navegador da web. Você passa o valor '/' para @app.route() para indicar que esta
função responderá às solicitações da web para o URL / , que é o URL principal.
A hello() função view retorna a string 'Hello, World!' como resposta.
Salve e feche o arquivo.
Para executar seu aplicativo da Web, primeiro você dirá ao Flask onde encontrar o
aplicativo (o hello.py arquivo no seu caso) com a FLASK_APP variável de ambiente:
(env)sammy@localhost:$ export FLASK_APP=hello
cópia de
Em seguida, execute-o no modo de desenvolvimento com a FLASK_ENV variável de
ambiente:
(env)sammy@localhost:$ export FLASK_ENV=development
cópia de
Por fim, execute o aplicativo usando o flask run comando:
(env)sammy@localhost:$ flask run
cópia de
Quando o aplicativo estiver em execução, a saída será algo assim:
Output
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 5/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
* Environment: development
* Debug mode: on
* Debugger is active!
Para resolver esse problema, pare o servidor que está sendo executado via CTRL+C ,
execute flask run novamente ou, se quiser executar os dois ao mesmo tempo, você
pode passar um número de porta diferente para o -p argumento, por exemplo, para
executar outro aplicativo na porta 5001 use o seguinte comando:
(env)sammy@localhost:$ flask run -p 5001
cópia de
Agora você tem um pequeno aplicativo da Web Flask. Você executou seu aplicativo e
exibiu informações no navegador da web. Em seguida, você usará arquivos HTML em
seu aplicativo.
Etapa 3 — Usando modelos HTML
Atualmente seu aplicativo exibe apenas uma mensagem simples sem qualquer HTML.
Os aplicativos da Web usam principalmente HTML para exibir informações para o
visitante, então agora você trabalhará na incorporação de arquivos HTML em seu
aplicativo, que podem ser exibidos no navegador da Web.
O Flask fornece uma render_template() função auxiliar que permite o uso do mecanismo
de modelo Jinja . Isso tornará o gerenciamento de HTML muito mais fácil escrevendo
seu código HTML em .html arquivos, bem como usando lógica em seu código HTML.
Você usará esses arquivos HTML ( templates ) para construir todas as páginas do seu
aplicativo, como a página principal onde você exibirá as postagens atuais do blog, a
página da postagem do blog, a página onde o usuário pode adicionar um novo postar, e
assim por diante.
Nesta etapa, você criará seu aplicativo Flask principal em um novo arquivo.
Primeiro, em seu flask_blog diretório, use nano ou seu editor favorito para criar e editar
seu app.py arquivo. Isso conterá todo o código que você usará para criar o aplicativo de
blog:
(env)sammy@localhost:$ nano app.py cópia de
Nesse novo arquivo, você importará o Flask objeto para criar uma instância do aplicativo
Flask como fez anteriormente. Você também importará a render_template() função
auxiliar que permite renderizar arquivos de modelo HTML que existem na
templates pasta que você está prestes a criar. O arquivo terá uma função de
visualização única que será responsável por tratar as requisições para a / rota principal.
Adicione o seguinte conteúdo:
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 7/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
frasco_blog/app.py
from flask import Flask, render_template
cópia de
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
Se você clicar nessa linha, o depurador revelará mais código para que você tenha mais
contexto para ajudá-lo a resolver o problema.
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 8/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
Para corrigir esse erro, crie um diretório chamado templates dentro do seu
flask_blog diretório. Em seguida, dentro dele, abra um arquivo chamado index.html para
edição:
(env)sammy@localhost:$ mkdir templates
cópia de
(env)sammy@localhost:$ nano templates/index.html
<head>
<meta charset="UTF-8">
<title>FlaskBlog</title>
</head>
<body>
<h1>Welcome to FlaskBlog</h1>
</body>
</html>
color: brown;
text-align: center;
padding: 10px;
O código CSS adicionará uma borda, mudará a cor para marrom, centralizará o texto e
adicionará um pouco de preenchimento às <h1> tags.
Salve e feche o arquivo.
Em seguida, abra o index.html arquivo de modelo para edição:
(env)sammy@localhost:$ nano templates/index.html
cópia de
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 10/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
frasco_blog/templates/index.html
. . .
cópia de
<head>
<meta charset="UTF-8">
</head>
. . .
Aqui você usa a url_for() função auxiliar para gerar o local apropriado do arquivo. O
primeiro argumento especifica que você está vinculando a um arquivo estático e o
segundo argumento é o caminho do arquivo dentro do diretório estático.
Salve e feche o arquivo.
Ao atualizar a página de índice do seu aplicativo, você notará que o texto Welcome to
FlaskBlog agora está em marrom, centralizado e dentro de uma borda.
Você pode usar a linguagem CSS para estilizar o aplicativo e torná-lo mais atraente
usando seu próprio design. No entanto, se você não for um web designer ou se não
estiver familiarizado com CSS, poderá usar o kit de ferramentas Bootstrap , que fornece
componentes fáceis de usar para estilizar seu aplicativo. Neste projeto, usaremos o
Bootstrap.
Você pode ter adivinhado que fazer outro modelo HTML significaria repetir a maior
parte do código HTML que você já escreveu no index.html modelo. Você pode evitar a
repetição desnecessária de código com a ajuda de um arquivo de modelo básico , do
qual todos os seus arquivos HTML herdarão. Consulte Herança de modelo em Jinja para
obter mais informações.
Para fazer um template base, primeiro crie um arquivo chamado base.html dentro do seu
templates diretório:
<head>
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 11/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
<meta charset="utf-8">
</head>
<body>
</button>
<ul class="navbar-nav">
</li>
</ul>
</div>
</nav>
<div class="container">
</div>
</html>
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 12/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
{% endblock %}
Nesta nova versão do index.html modelo, você usa a {% extends %} tag para herdar do
base.html modelo. Em seguida, você o estende substituindo o content bloco no modelo
base pelo que está dentro do content bloco no bloco de código anterior.
Este content bloco contém uma <h1> tag com o texto Welcome to FlaskBlog dentro de um
title bloco, que por sua vez substitui o title bloco original no base.html template pelo
texto Welcome to FlaskBlog . Dessa forma, você evita repetir o mesmo texto duas vezes,
pois ele funciona tanto como título da página quanto como cabeçalho que aparece
abaixo da barra de navegação herdada do modelo base.
A herança de template também lhe dá a habilidade de reutilizar o código HTML que
você tem em outros templates ( base.html neste caso) sem ter que repeti-lo toda vez
que for necessário.
Salve e feche o arquivo e atualize a página de índice em seu navegador. Você verá sua
página com uma barra de navegação e um título estilizado.
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 13/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
Você usou modelos HTML e arquivos estáticos no Flask. Você também usou o Bootstrap
para começar a refinar a aparência da sua página e um modelo base para evitar
repetição de código. Na próxima etapa, você configurará um banco de dados que
armazenará os dados do seu aplicativo.
Passo 4 — Configurando o banco de dados
Nesta etapa, você configurará um banco de dados para armazenar dados, ou seja, as
postagens do blog do seu aplicativo. Você também preencherá o banco de dados com
algumas entradas de exemplo.
Você usará um arquivo de banco de dados SQLite para armazenar seus dados porque o
sqlite3 módulo, que usaremos para interagir com o banco de dados, está prontamente
disponível na biblioteca padrão do Python. Para obter mais informações sobre SQLite,
confira este tutorial .
Primeiro, porque os dados no SQLite são armazenados em tabelas e colunas, e como
seus dados consistem principalmente em postagens de blog, primeiro você precisa criar
uma tabela chamada posts com as colunas necessárias. Você criará um .sql arquivo
que contém comandos SQL para criar a posts tabela com algumas colunas. Você usará
esse arquivo para criar o banco de dados.
Abra um arquivo chamado schema.sql dentro do seu flask_blog diretório:
(env)sammy@localhost:$ nano schema.sql
cópia de
Digite os seguintes comandos SQL dentro deste arquivo:
frasco_blog/schema.sql
DROP TABLE IF EXISTS posts;
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 14/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
);
Agora que você tem um esquema SQL no schema.sql arquivo, você o usará para criar o
banco de dados usando um arquivo Python que gerará um .db arquivo de banco de
dados SQLite. Abra um arquivo chamado init_db.py dentro do flask_blog diretório
usando seu editor preferido:
(env)sammy@localhost:$ nano init_db.py
cópia de
E então adicione o seguinte código.
frasco_blog/init_db.py
import sqlite3
cópia de
connection = sqlite3.connect('database.db')
with open('schema.sql') as f:
connection.executescript(f.read())
cur = connection.cursor()
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 15/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
connection.commit()
connection.close()
Você primeiro importa o sqlite3 módulo e, em seguida, abre uma conexão com um
arquivo de banco de dados chamado database.db , que será criado assim que você
executar o arquivo Python. Então você usa a open() função para abrir o
schema.sql arquivo. Em seguida, você executa seu conteúdo usando o
executescript() método que executa várias instruções SQL de uma só vez, o que criará
a posts tabela. Você cria um objeto Cursor que permite usar seu execute() método para
executar duas INSERT instruções SQL para adicionar duas postagens de blog à sua
posts tabela. Finalmente, você confirma as alterações e fecha a conexão.
Agora que você configurou seu banco de dados, agora você pode modificar a
index() função de visualização para exibir todas as postagens que você possui em seu
banco de dados.
Abra o app.py arquivo para fazer as seguintes modificações:
(env)sammy@localhost:$ nano app.py cópia de
Para sua primeira modificação, você importará o sqlite3 módulo na parte superior do
arquivo:
frasco_blog/app.py
import sqlite3
cópia de
from flask import Flask, render_template
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 16/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
. . .
Em seguida, você criará uma função que cria uma conexão de banco de dados e a
retorna. Adicione-o diretamente após as importações:
frasco_blog/app.py
. . .
cópia de
from flask import Flask, render_template
def get_db_connection():
conn = sqlite3.connect('database.db')
conn.row_factory = sqlite3.Row
return conn
. . .
Essa get_db_connection() função abre uma conexão com o database.db arquivo de banco
de dados e, em seguida, define o row_factory atributo como sqlite3.Row para que você
possa ter acesso baseado em nome às colunas. Isso significa que a conexão com o
banco de dados retornará linhas que se comportam como dicionários Python comuns.
Por fim, a função retorna o conn objeto de conexão que você usará para acessar o
banco de dados.
Depois de definir a get_db_connection() função, modifique a index() função para se
parecer com o seguinte:
frasco_blog/app.py
. . .
cópia de
@app.route('/')
def index():
conn = get_db_connection()
conn.close()
Nesta nova versão da index() função, você primeiro abre uma conexão de banco de
dados usando a get_db_connection() função definida anteriormente. Em seguida, você
executa uma consulta SQL para selecionar todas as entradas da posts tabela. Você
implementa o fetchall() método para buscar todas as linhas do resultado da consulta,
isso retornará uma lista dos posts que você inseriu no banco de dados no passo
anterior.
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 17/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
Você fecha a conexão com o banco de dados usando o close() método e retorna o
resultado da renderização do index.html modelo. Você também passa o posts objeto
como argumento, que contém os resultados obtidos do banco de dados, isso permitirá
que você acesse os posts do blog no index.html template.
Com essas modificações em vigor, salve e feche o app.py arquivo.
Agora que você passou as postagens que buscou do banco de dados para o
index.html modelo, você pode usar um for loop para exibir cada postagem em sua
página de índice.
Abra o index.html arquivo:
(env)sammy@localhost:$ nano templates/index.html
cópia de
Em seguida, modifique-o para ficar da seguinte forma:
frasco_blog/templates/index.html
{% extends 'base.html' %}
cópia de
{% block content %}
</a >
<hr >
{% endfor %}
{% endblock %}
Aqui, a sintaxe {% for post in posts %} é um loop Jinja for , que é semelhante a um
for loop Python, exceto que deve ser fechado posteriormente com a {% endfor
%} sintaxe. Você usa essa sintaxe para fazer um loop sobre cada item na posts lista que
foi passada pela index() função na linha return render_template('index.html',
posts=posts) . Dentro desse for loop, você exibe o título da postagem em um
<h2> cabeçalho dentro de uma <a> tag (mais tarde você usará essa tag para vincular a
cada postagem individualmente).
Você exibe o título usando um delimitador de variável literal ( {{ ... }} ). Lembre-se que
post será um objeto tipo dicionário, então você pode acessar o título do post com
post['title'] . Você também exibe a data de criação da postagem usando o mesmo
método.
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 18/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
Agora que você modificou a index() função de visualização para exibir todas as
postagens que você tem no banco de dados na página inicial do seu aplicativo, você
passará a exibir cada postagem em uma única página e permitir que os usuários
vinculem a cada postagem individual.
Passo 6 — Exibindo um único post
Nesta etapa, você criará uma nova rota do Flask com uma função de visualização e um
novo modelo HTML para exibir uma postagem de blog individual por seu ID.
Ao final desta etapa, a URL http://127.0.0.1:5000/1 será uma página que exibe o
primeiro post (porque possui o ID 1 ). A URL exibirá a postagem com o número
associado, se existir. http://127.0.0.1:5000/ ID ID
Aberto app.py para edição:
(env)sammy@localhost:$ nano app.py cópia de
Como você precisará obter uma postagem de blog por seu ID do banco de dados em
vários locais posteriormente neste projeto, você criará uma função autônoma chamada
get_post() . Você pode chamá-lo passando um ID e receber de volta a postagem do
blog associada à ID fornecida ou fazer o Flask responder com uma 404 Not
Found mensagem se a postagem do blog não existir.
Para responder com uma 404 página, você precisa importar a abort() função da
Werkzeug biblioteca, que foi instalada junto com o Flask, no topo do arquivo:
frasco_blog/app.py
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 19/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
import sqlite3
cópia de
from flask import Flask, render_template
. . .
conn = sqlite3.connect('database.db')
conn.row_factory = sqlite3.Row
return conn
def get_post(post_id):
conn = get_db_connection()
(post_id,)).fetchone()
conn.close()
if post is None:
abort(404)
return post
. . .
Essa nova função tem um post_id argumento que determina qual postagem do blog
retornar.
Dentro da função, você usa a get_db_connection() função para abrir uma conexão de
banco de dados e executar uma consulta SQL para obter a postagem do blog associada
ao post_id valor fornecido. Você adiciona o fetchone() método para obter o resultado e
armazena-o na post variável, em seguida, fecha a conexão. Se a post variável tiver o
valor None , significando que nenhum resultado foi encontrado no banco de dados, você
usa a abort() função que importou anteriormente para responder com um 404 código de
erro e a função terminará a execução. Se, no entanto, um post foi encontrado, você
retorna o valor da post variável.
Em seguida, adicione a seguinte função de visualização no final do app.py arquivo:
frasco_blog/app.py
. . .
cópia de
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 20/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
@app.route('/<int:post_id>')
def post(post_id):
post = get_post(post_id)
Nesta nova função de visualização, você adiciona uma regra de variável <int:post_id>
para especificar que a parte após a barra ( / ) é um inteiro positivo (marcado com o
int conversor) que você precisa acessar em sua função de visualização. O Flask
reconhece isso e passa seu valor para o post_id argumento de palavra-chave da sua
post() função de visualização. Em seguida, você usa a get_post() função para obter a
postagem do blog associada ao ID especificado e armazenar o resultado na
post variável, que você passa para um post.html modelo que você criará em breve.
Salve o app.py arquivo e abra um novo post.html arquivo de modelo para edição:
(env)sammy@localhost:$ nano templates/post.html
cópia de
Digite o seguinte código neste novo post.html arquivo. Isso será semelhante ao
index.html arquivo, exceto que exibirá apenas uma única postagem, além de exibir
também o conteúdo da postagem:
frasco_blog/templates/post.html
{% extends 'base.html' %}
cópia de
{% block content %}
{% endblock %}
Você adiciona o title bloco que definiu no base.html modelo para fazer com que o título
da página reflita o título do post que é exibido em um <h2> título ao mesmo tempo.
Salve e feche o arquivo.
Agora você pode navegar para as seguintes URLs para ver as duas postagens que você
tem em seu banco de dados, juntamente com uma página que informa ao usuário que a
postagem de blog solicitada não foi encontrada (já que não há postagem com um
número de ID de 3 até agora):
http://127.0.0.1:5000/1
http://127.0.0.1:5000/2
http://127.0.0.1:5000/3
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 21/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
Voltando à página de índice, você fará com que cada título do post se vincule à sua
respectiva página. Você fará isso usando a url_for() função. Primeiro, abra o
index.html modelo para edição:
frasco_blog/templates/index.html
{% for post in posts %}
cópia de
<a href=" {{ url_for('post', post_id=post['id']) }} ">
</a>
<hr>
{% endfor %}
Aqui, você passa 'post' para a url_for() função como um primeiro argumento. Este é o
nome da post() função view e como ela aceita um post_id argumento, você dá a ela o
valor post['id'] . A url_for() função retornará a URL adequada para cada postagem
com base em seu ID.
Salve e feche o arquivo.
Os links na página de índice agora funcionarão conforme o esperado. Com isso, você
terminou de construir a parte do aplicativo responsável por exibir as postagens do blog
em seu banco de dados. Em seguida, você adicionará a capacidade de criar, editar e
excluir postagens de blog ao seu aplicativo.
Etapa 7 — Modificando postagens
Agora que você terminou de exibir as postagens do blog que estão presentes no banco
de dados no aplicativo da Web, você precisa permitir que os usuários do seu aplicativo
escrevam novas postagens no blog e as adicionem ao banco de dados, editem as
existentes e excluam as postagens desnecessárias. postagens no blog.
Criando uma nova postagem
Até este ponto, você tem um aplicativo que exibe as postagens em seu banco de dados,
mas não oferece nenhuma maneira de adicionar uma nova postagem, a menos que você
se conecte diretamente ao banco de dados SQLite e adicione uma manualmente. Nesta
seção, você criará uma página na qual poderá criar uma postagem fornecendo seu título
e conteúdo.
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 22/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
. . .
frasco_blog/app.py
. . .
cópia de
app = Flask(__name__)
@app.route('/')
def index():
conn = get_db_connection()
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 23/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
conn.close()
. . .
Lembre-se de que a chave secreta deve ser uma longa string aleatória.
Depois de definir uma chave secreta, você criará uma função de visualização que
renderizará um modelo que exibe um formulário que você pode preencher para criar
uma nova postagem no blog. Adicione esta nova função na parte inferior do arquivo:
frasco_blog/app.py
. . .
cópia de
@app.route('/create', methods=('GET', 'POST'))
def create():
return render_template('create.html')
Isso cria uma /create rota que aceita solicitações GET e POST. As solicitações GET são
aceitas por padrão. Para aceitar também requisições POST, que são enviadas pelo
navegador ao enviar formulários, você passará uma tupla com os tipos de requisições
aceitas para o methods argumento do @app.route() decorador.
Salve e feche o arquivo.
Para criar o modelo, abra um arquivo chamado create.html dentro de sua
templates pasta:
<form method="post">
<div class="form-group">
<label for="title">Title</label>
</div>
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 24/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
<div class="form-group">
<label for="content">Content</label>
</div>
<div class="form-group">
</div>
</form>
{% endblock %}
A maior parte deste código é HTML padrão. Ele exibirá uma caixa de entrada para o
título da postagem, uma área de texto para o conteúdo da postagem e um botão para
enviar o formulário.
O valor da entrada do título do post é {{ request.form['title'] }} e a área de texto tem
o valor {{ request.form['content'] }} , isso é feito para que os dados inseridos não
sejam perdidos se algo der errado. Por exemplo, se você escrever um post longo e
esquecer de dar um título, uma mensagem será exibida informando que o título é
obrigatório. Isso acontecerá sem perder a postagem que você escreveu, pois ela será
armazenada no request objeto global ao qual você tem acesso em seus modelos.
Agora, com o servidor de desenvolvimento rodando, use seu navegador para navegar
até a /create rota:
http://127.0.0.1:5000/create
Você verá uma página Criar uma nova postagem com uma caixa para um título e
conteúdo.
Este formulário envia uma solicitação POST para sua create() função de visualização.
No entanto, ainda não há código para lidar com uma solicitação POST na função, então
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 25/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
def create():
if request.method == 'POST':
title = request.form['title']
content = request.form['content']
if not title:
flash('Title is required!')
else:
conn = get_db_connection()
(title, content))
conn.commit()
conn.close()
return redirect(url_for('index'))
return render_template('create.html')
Na if instrução, você garante que o código a seguir seja executado apenas quando a
solicitação for uma solicitação POST por meio da comparação request.method == 'POST' .
Em seguida, você extrai o título e o conteúdo enviados do request.form objeto que
fornece acesso aos dados do formulário na solicitação. Se o título não for fornecido, a
condição if not title será cumprida, exibindo uma mensagem ao usuário informando
que o título é obrigatório. Se, por outro lado, o título for fornecido, você abre uma
conexão com a get_db_connection() função e insere o título e o conteúdo recebido na
posts tabela.
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 26/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
Preencha o formulário com um título de sua escolha e algum conteúdo. Depois de enviar
o formulário, você verá a nova postagem listada na página de índice.
Por fim, você exibirá mensagens em flash e adicionará um link à barra de navegação no
base.html modelo para ter acesso fácil a esta nova página. Abra o arquivo de modelo:
</button>
<ul class="navbar-nav">
<li class="nav-item">
</li>
</li >
</ul>
</div>
</nav>
<div class="container">
{% endfor %}
</div>
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 27/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
Salve e feche o arquivo. A barra de navegação agora terá um New Post item vinculado à
/create rota.
Para que um blog esteja atualizado, você precisará editar suas postagens existentes.
Esta seção irá guiá-lo através da criação de uma nova página em seu aplicativo para
simplificar o processo de edição de uma postagem.
Primeiro, você adicionará uma nova rota ao app.py arquivo. Sua função de visualização
receberá o ID do post que precisa ser editado, a URL estará no formato com a variável
sendo o ID do post. Abra o arquivo para edição: / post_id /edit post_id app.py
(env)sammy@localhost:$ nano app.py cópia de
Em seguida, adicione a seguinte edit() função de visualização no final do arquivo. Editar
um post existente é semelhante a criar um novo, então esta função de visualização será
semelhante à create() função de visualização:
frasco_blog/app.py
. . .
cópia de
@app.route('/<int:id>/edit', methods=('GET', 'POST'))
def edit(id):
post = get_post(id)
if request.method == 'POST':
title = request.form['title']
content = request.form['content']
if not title:
flash('Title is required!')
else:
conn = get_db_connection()
conn.close()
return redirect(url_for('index'))
A postagem que você edita é determinada pela URL e o Flask passará o número de ID
para a edit() função por meio do id argumento. Você adiciona esse valor à
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 28/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
Assim como quando você cria um novo post, primeiro você extrai os dados do
request.form objeto e depois exibe uma mensagem se o título tiver um valor vazio, caso
contrário, você abre uma conexão com o banco de dados. Então você atualiza a
posts tabela definindo um novo título e um novo conteúdo onde o ID do post no banco
de dados é igual ao ID que estava na URL.
No caso de uma solicitação GET, você renderiza um edit.html template passando a
post variável que contém o valor retornado da get_post() função. Você usará isso para
exibir o título e o conteúdo existentes na página de edição.
Salve e feche o arquivo e crie um novo edit.html modelo:
(env)sammy@localhost:$ nano templates/edit.html
cópia de
Escreva o seguinte código dentro deste novo arquivo:
frasco_blog/templates/edit.html
{% extends 'base.html' %}
cópia de
{% block content %}
<form method="post">
<div class="form-group">
<label for="title">Title</label>
class="form-control"
</input>
</div>
<div class="form-group">
<label for="content">Content</label>
<div class="form-group">
</div>
</form>
<hr>
{% endblock %}
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 29/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 30/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
</a>
</a >
<hr>
{% endfor %}
{% endblock %}
Às vezes, uma postagem não precisa mais estar disponível publicamente, e é por isso
que a funcionalidade de excluir uma postagem é crucial. Nesta etapa, você adicionará a
funcionalidade de exclusão ao seu aplicativo.
Primeiro, você adicionará uma nova rota que aceita solicitações POST, semelhante à
função view. Sua nova função de visualização receberá o ID da postagem a ser excluída
da URL. Abra o arquivo: / ID /delete edit() delete() app.py
(env)sammy@localhost:$ nano app.py cópia de
Adicione a seguinte função de visualização na parte inferior do arquivo:
frasco_blog/app.py
# ....
cópia de
@app.route('/<int:id>/delete', methods=('POST',))
def delete(id):
post = get_post(id)
conn = get_db_connection()
conn.commit()
conn.close()
return redirect(url_for('index'))
Esta função de visualização aceita apenas solicitações POST. Isso significa que navegar
para a rota em seu navegador retornará um erro porque os navegadores da Web são
padronizados para solicitações GET. / ID /delete
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 31/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
No entanto, você pode acessar essa rota através de um formulário que envia uma
solicitação POST passando o ID da postagem que deseja excluir. A função receberá o
valor do ID e o utilizará para obter a postagem do banco de dados com a
get_post() função.
frasco_blog/templates/edit.html
<hr>
cópia de
<form action="{{ url_for('delete', id=post['id']) }}" method="POST">
</form>
{% endblock %}
Você usa o confirm() método para exibir uma mensagem de confirmação antes de
enviar a solicitação.
Agora navegue novamente para a página de edição de uma postagem do blog e tente
excluí-la:
http://127.0.0.1:5000/ 1 /edit
Ao final desta etapa, o código-fonte do seu projeto será semelhante ao código desta
página .
Com isso, os usuários do seu aplicativo agora podem escrever novas postagens no blog
e adicioná-las ao banco de dados, editar e excluir postagens existentes.
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 32/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
Conclusão
Este tutorial apresentou conceitos essenciais da estrutura Flask Python. Você aprendeu
como fazer um pequeno aplicativo da web, executá-lo em um servidor de
desenvolvimento e permitir que o usuário forneça dados personalizados por meio de
parâmetros de URL e formulários da web. Você também usou o mecanismo de modelo
Jinja para reutilizar arquivos HTML e usar lógica neles. No final deste tutorial, agora
você tem um blog da Web totalmente funcional que interage com um banco de dados
SQLite para criar, exibir, editar e excluir postagens de blog usando a linguagem Python e
consultas SQL. Se você quiser saber mais sobre como trabalhar com Flask e SQLite,
confira este tutorial sobre Como usar relacionamentos de banco de dados um para
muitos com Flask e SQLite .
Você pode desenvolver ainda mais este aplicativo adicionando autenticação de usuário
para que apenas usuários registrados possam criar e modificar postagens de blog, você
também pode adicionar comentários e tags para cada postagem de blog e adicionar
uploads de arquivos para dar aos usuários a capacidade de incluir imagens na
postagem. Consulte a documentação do Flask para obter mais informações.
O Flask tem muitas extensões do Flask feitas pela comunidade . Veja a seguir uma lista
de extensões que você pode usar para facilitar seu processo de desenvolvimento:
Flask-Login : gerencia a sessão do usuário e lida com login e logout e lembrando
usuários logados.
Flask-SQLAlchemy : simplifica o uso do Flask com SQLAlchemy , um kit de
ferramentas Python SQL e Mapeador Relacional de Objetos para interagir com
bancos de dados SQL.
Flask-Mail : ajuda na tarefa de enviar mensagens de e-mail em seu aplicativo Flask.
DigitalOcean!
Sobre os autores
Comentários
10 comentários
implantar está de volta! Participe da conferência Estamos Blogue Documentos Obter Vendas
virtual da DigitalOcean para construtores globais. contratando suporte
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 34/41
g
16/10/2022 23:21
p g
Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
p
Inscreva-se hoje ->
Deixe um comentário...
Você pode digitar !ref nesta área de texto para pesquisar rapidamente nosso conjunto
completo de tutoriais, documentação e ofertas de mercado e inserir o link!
Faça login ou inscreva-se para comentar
Leandro • 13 de setembro de 2020
Excelente tutorial! Não é comum que um tutorial publicado seja executado
exatamente como as instruções sugerem, mas tudo correu conforme o
planejado (com exceção de executá-lo no Windows 10 em oposição ao Linux).
Certifique-se de se inscrever apenas para deixar este comentário, mas este
guia merece. Muito obrigado!
Mostrar respostas Responder
Esta obra está licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-
CompartilhaIgual 4.0 Internacional.
Click below to sign up and get $$200 of credit to try our products over 60 days!
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 37/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
Sign up ->
Popular Topics
Ubuntu
Linux Basics
JavaScript
React
Python
Security
Apache
MySQL
Databases
Docker
Kubernetes
Ebooks
Browse all topic tags
All tutorials ->
Questions
Q&A
Ask a question
DigitalOcean Product Docs
DigitalOcean Support
Events
Tech Talks
Hacktoberfest
Deploy
Get involved
Community Newsletter
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 38/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 39/41
16/10/2022 23:21 Como fazer um aplicativo da Web usando Flask em Python 3 | DigitalOcean
TORNE-SE UM COLABORADOR
Você é pago; doamos para
organizações sem fins lucrativos
de tecnologia.
Contato
Apoiar
Vendas
Denunciar abuso
Status do sistema
Compartilhe suas ideias
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3 41/41