Como criar uma aplicação web com Python

Olá! Neste tutorial, vamos aprender a criar uma aplicação web utilizando Python. Python é uma linguagem de programação de alto nível, amplamente utilizada em vários contextos, incluindo aplicações web.

Como criar uma aplicação web com Python
Aprenda a criar uma aplicação web com Python utilizando o framework Flask. Descubra como criar rotas, usar templates e formulários, trabalhar com banco de dados e proteger rotas com autenticação.

Antes de começarmos, é importante mencionar que existem diversas formas de criar aplicações web com Python. Neste tutorial, vamos utilizar o framework Flask. Flask é um framework leve e fácil de usar, ideal para quem está começando a aprender a criar aplicações web com Python.

Pré-requisitos

Antes de começarmos a criar a nossa aplicação web, é necessário que você tenha o seguinte:

  • Python instalado em sua máquina. É recomendado utilizar a versão 3.8 ou superior. Você pode verificar a versão do Python instalada em sua máquina digitando o comando python --version no terminal ou prompt de comando.
  • Um editor de código. Existem diversas opções, como o Visual Studio Code, PyCharm e Sublime Text. Escolha aquele que mais se adapta ao seu workflow.

Instalando o Flask

Para instalar o Flask, basta abrir o terminal ou prompt de comando e digitar o seguinte comando:

pip install flask

Esse comando irá instalar o Flask e todas as dependências necessárias para que possamos utilizá-lo para criar a nossa aplicação web.

Criando o projeto

Agora que já temos o Flask instalado, vamos criar a estrutura básica do nosso projeto. Para isso, vamos criar um diretório para o projeto e, dentro dele, um arquivo chamado app.py. O arquivo app.py será o ponto de partida da nossa aplicação.

Abra o terminal ou prompt de comando e digite os seguintes comandos:

mkdir meu_projeto
cd meu_projeto
touch app.py

Esses comandos criarão um diretório chamado meu_projeto e, dentro dele, um arquivo chamado app.py.

Criando a primeira rota

Agora que já criamos a estrutura básica do nosso projeto, vamos criar a nossa primeira rota. Em uma aplicação web, uma rota é um endereço específico que, quando acessado pelo usuário, retorna algum conteúdo. Por exemplo, quando o usuário acessa a rota /home, ele pode ver a página principal do site.

Para criar uma rota no Flask, precisamos importar o módulo Flask e criar uma instância dele. Em seguida, usamos o método route para indicar a rota que queremos criar e a função que será executada quando a rota for acessada.

No arquivo app.py, adicione o seguinte código:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Olá, mundo!'

Nesse código, estamos importando o módulo Flask e criando uma instância dele. Em seguida, criamos a rota / usando o decorador @app.route. Quando o usuário acessar essa rota, a função hello_world será executada e o texto “Olá, mundo!” será retornado.

Executando a aplicação

Agora que já criamos a nossa primeira rota, vamos executar a aplicação para verificar se tudo está funcionando corretamente. No arquivo app.py, adicione o seguinte código:

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

Esse código fará com que a aplicação seja iniciada quando o arquivo for executado. Para executar o arquivo, basta abrir o terminal ou prompt de comando, navegar até o diretório do projeto e digitar o seguinte comando:

python app.py

A aplicação será iniciada e você pode acessá-la pelo endereço http://localhost:5000, que é o endereço padrão do Flask. Se tudo estiver funcionando corretamente, você verá a mensagem “Olá, mundo!” ao acessar esse endereço.

Criando páginas HTML

Até agora, nossa aplicação só retorna uma mensagem de texto simples. Mas, na maioria das vezes, queremos que nossas aplicações retornem páginas HTML com conteúdo mais elaborado.

Para criar páginas HTML no Flask, podemos usar templates. Um template é um arquivo HTML que possui marcadores especiais que são substituídos pelo Flask com o conteúdo desejado. Dessa forma, podemos criar um layout básico e reutilizá-lo em várias páginas da aplicação, alterando apenas o conteúdo específico de cada página.

Para usar templates no Flask, precisamos importar o módulo render_template e, em seguida, usar a função render_template passando o nome do template e, opcionalmente, os parâmetros que queremos passar para o template.

Por exemplo, vamos criar um template chamado index.html que possui uma mensagem de boas-vindas. Crie um diretório chamado templates no mesmo nível do arquivo app.py e, dentro dele, crie um arquivo chamado index.html com o seguinte conteúdo:

<html>
  <head>
    <title>Meu site</title>
  </head>
  <body>
    <h1>Bem-vindo ao meu site!</h1>
  </body>
</html>

Agora, vamos criar uma rota que retorna essa página. No arquivo app.py, adicione o seguinte código:

from flask import Flask, render_template

app = Flask(__name__)

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

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

Agora, quando o usuário acessar a rota /, a página index.html será retornada.

Passando parâmetros para o template

Às vezes, queremos personalizar o conteúdo de nossas páginas de acordo com os parâmetros passados para elas. Por exemplo, podemos criar uma página de perfil que mostra informações específicas de um usuário, como o nome e a idade.

Para passar parâmetros para o template, basta passá-los como argumentos da função render_template. No template, podemos acessar esses parâmetros usando a notação de chaves duplas, como {{ nome }} ou {{ idade }}.

Vamos criar um template chamado perfil.html que mostra o nome e a idade de um usuário. Adicione o seguinte código ao arquivo templates/perfil.html:

<html>
  <head>
    <title>Perfil de {{ nome }}</title>
  </head>
  <body>
    <h1>Perfil de {{ nome }}</h1>
    <p>Idade: {{ idade }}</p>
  </body>
</html>

Agora, vamos criar uma rota que retorna essa página com os parâmetros desejados. No arquivo app.py, adicione o seguinte código:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/perfil/<nome>/<int:idade>')
def perfil(nome, idade):
    return render_template('perfil.html', nome=nome, idade=idade)

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

Agora, quando o usuário acessar a rota /perfil/<nome>/<idade>, a página perfil.html será retornada com os valores de nome e idade preenchidos. Por exemplo, ao acessar a rota /perfil/João/30, a página exibirá “Perfil de João” e “Idade: 30”.

Formulários

Muitas vezes, queremos que nossas aplicações permitam que os usuários enviam dados para o servidor, como quando preenchem um formulário de login ou de cadastro. Para isso, podemos usar o elemento form do HTML e o método POST do HTTP.

O elemento form possui um atributo action que indica a rota para a qual os dados serão enviados e um atributo method que indica o método HTTP a ser usado. O método POST é usado para enviar dados para o servidor e é geralmente usado para alterar o estado da aplicação, enquanto o método GET é usado para obter dados do servidor e é geralmente usado para consultas.

Vamos criar um formulário de login simples. Adicione o seguinte código ao arquivo templates/login.html:

<html>
  <head>
    <title>Login</title>
  </head>
  <body>
    <h1>Login</h1>
    <form action="/login" method="POST">
      <label for="username">Usuário:</label><br>
      <input type="text" id="username" name="username"><br>
      <label for="password">Senha:</label><br>
      <input type="password" id="password" name="password"><br><br>
      <input type="submit" value="Entrar">
    </form> 
  </body>
</html>

No formulário acima, criamos um campo de texto para o nome de usuário, um campo de senha e um botão de envio. O atributo action do formulário indica que os dados serão enviados para a rota /login e o atributo method indica que o método HTTP POST será usado.

Para tratar o formulário de login, precisamos criar uma rota que recebe os dados do formulário e verifica se as credenciais são válidas. No arquivo app.py, adicione o seguinte código:

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        # Recebendo os dados do formulário
        username = request.form['username']
        password = request.form['password']

        # Verificando se as credenciais são válidas
        if username == 'admin' and password == 'senha':
            return 'Usuário logado com sucesso!'
        else:
            return 'Usuário ou senha inválidos.'
    else:
        return render_template('login.html')

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

Nesse código, criamos a rota /login que aceita os métodos GET e POST. Quando o usuário acessa a rota com o método GET, o formulário de login é exibido. Quando o usuário submete o formulário com o método POST, os dados são recebidos e verificados. Se as credenciais forem válidas, uma mensagem de sucesso é exibida. Caso contrário, uma mensagem de erro é exibida.

Conclusão

Neste tutorial, aprendemos como criar uma aplicação web com Python utilizando o framework Flask. Vimos como criar rotas, usar templates e formulários para interagir com o usuário.

Existem muitas outras coisas que podemos fazer com o Flask, como trabalhar com banco de dados, enviar e-mails e proteger rotas com autenticação. Para saber mais sobre o Flask, consulte a documentação oficial.