Na função que renderiza nossa página index, adicionaremos o comando para fazer o select em todos os registros do banco, e passaremos o objeto para o nosso template:
@app.route('/')
def index():
posts = Posts.query.all()
return render_template('index.html', posts=posts)
{% for post in posts %}
<a href="#">
<h2>{{ post['title'] }}</h2>
</a>
<span class="badge badge-dark">{{ post['created'] }}</span>
<hr/>
{% endfor %}
Importaremos uma dependência para lidar com o erro quando um post não for encontrado
from werkzeug.exceptions import abort
Criaremos uma função para localizar o post em nossa tabela do banco de dados:
def get_post(post_id):
post = Posts.query.filter_by(id = post_id).first()
if post in None:
abort(404)
return post
Criaremos uma nova rota na aplicação que recebe o id do post por parametro e irá exibir o post:
@app.route('/<int:post_id>')
def post(post_id):
post = get_post(post_id)
return render_template('post.html', post=post)
Adicionaremos o link para essa página nos posts que estão sendo listados na index:
<a href="{{ url_for('post', post_id=post['id']) }}">...</a>