No último post, aprendemos a criar um aplicativo complementar usando Flask e Bootstrap 5. Neste post, vamos dar um passo adiante e aprender a criar um aplicativo web Flask com Banco de Dados, que permite ao usuário enviar dados para um banco de dados a partir de um formulário HTML5 e exibir esses dados na tela.

Configurando o Banco de Dados

Vamos usar o SQLite, que é um banco de dados leve e fácil de usar que é perfeito para projetos pequenos e médios. Primeiro, precisamos instalar a extensão Flask-SQLAlchemy, que nos permite trabalhar com o SQLAlchemy (um ORM popular para Python) no Flask. Ative seu ambiente virtual e instale a extensão com o seguinte comando:

pip install flask_sqlalchemy

Em seguida, vamos configurar o banco de dados em nosso aplicativo Flask. Adicione o seguinte código ao arquivo blog.py:

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘sqlite:///site.db’
db = SQLAlchemy(app)

Criando um Modelo

Um modelo é uma representação de uma tabela de banco de dados em código. Vamos criar um modelo Post para representar nossos posts de blog. Adicione o seguinte código ao arquivo blog.py:

class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)

def __repr__(self):
return f”Post(‘{self.title}’)”

Em seguida, vamos criar nosso banco de dados e tabelas com o seguinte comando:

with app.app_context():
    db.create_all()

Criando e Exibindo Posts

Agora que temos nosso banco de dados e modelo configurados, podemos criar e exibir posts. Vamos modificar nosso aplicativo Flask para permitir ao usuário enviar dados para o banco de dados. Adicione o seguinte código ao arquivo blog.py:

@app.route(‘/post/new’, methods=[‘GET’, ‘POST’])
def new_post():
    if request.method == ‘POST’:
        title = request.form[‘title’]
        content = request.form[‘content’]
        post = Post(title=title, content=content)
        db.session.add(post)
        db.session.commit()
        return redirect(url_for(‘home’))
    return render_template(‘create_post.html’)

Em seguida, vamos modificar nosso template home.html para exibir os posts do banco de dados:

{% extends "base.html" %}

{% block content %}
    {% for post in posts %}
        <h1 class="mt-5">{{ post.title }}</h1>
        <p>{{ post.content }}</p>
    {% endfor %}
{% endblock %}

Agora, quando você visitar http://localhost:5000, poderá criar um novo post e ver todos os posts exibidos na página inicial!

Conclusão

Neste post, aprendemos a criar um aplicativo Flask que permite ao usuário enviar dados para um banco de dados e exibir esses dados na tela. No próximo post, vamos explorar mais recursos do Flask. Fique ligado!