Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Links Internos entre Páginas HTML Estáticas Flask

Preciso definir rotas pra tudo, inclusive para links internos entre páginas html estáticas?

Tenho um conjunto de páginas html estáticas que possuem links entre elas. Essas páginas são artigos de um blog e estou implementando a funcionalidade de o usuário inserir comentários. A parte onde o usuário insere o comentário é um crud porque ele se autentica e insere o comentário, mas não tô conseguindo lidar com os links entre as páginas, já que isso era um conjunto de páginas estáticas interligadas por links. Não achei nada na web que pudesse me dar uma luz de como o Flask trata disso.

Grato, Airton

6 respostas

Olá Airton!

Realmente, por questão de manutenção e atualizações futuras não seria interessante deixar esses links de forma estática.

Eu recomendaria que todos os posts fossem acessados através da URL:

/posts/{id}

Onde {id} representa cada post que está cadastrado. Dessa forma, a cada página de post você poderia chamar a próxima pegando o ID da página atual e somando +1, exemplo: O post de ID 5 terá uma URL que aponta para o post de ID 6 e assim por diante.

Podem existir outras formas de fazer isso, no momento é o que me vem a mente.

Existe um tutorial/ebook sobre Django que acho muito bom (eu cheguei a imprimir e encadernar kk) que pode te ajudar a encontrar uma solução pois o projeto que é construído é exatamente um blog.

Caso tenha interesse eu fiz o projeto e disponibilizei ele na internet (tá bem simples):

http://guilhermetadeu.pythonanywhere.com/

O link do repositório:

https://github.com/GuiTadeu/My-First-Blog

Espero que tenha ajudado!

Olá Guilherme.

Não entendi muito bem a explicação porque ainda sou iniciante em dev, mas vou ver os materiais e de alguma forma chegar à solução para esse caso.

Olá Airton!

Vi que você já fez curso de MySQL então farei uma analogia.

Você teria uma tabela de Posts no seu banco de dados onde eles teriam os seguintes atributos:

ID
Nome
Data
Imagem
Texto

No ID você usaria um auto increment para cada post cadastrado.

Exemplo:

ID: 1
Nome: Programação Java
Data: 12/12/2012
Imagem: /fotos/java.jpg
Texto: Lorem Ipsum
ID: 2
Nome: Programação Python
Data: 05/07/2019
Imagem: /fotos/python.jpg
Texto: Lorem Ipsum

O Django tem tags template que vem para trazer dinamismo na sua pagina.

Ou seja, ao invés de você deixar estático o link você faria que o Python gerasse esse link.

Como?

Primeiro, você criaria um controller que atende a seguinte URL: /post/{id}

Onde esse id iria buscar o post no banco, renderizar e enviar para o usuario.

Ou seja, se acessassemos a seguinte URL: /post/1 ele nos retornaria o post sobre Programação Java.

Se acessacemos a URL: /post/2 ele nos retornaria o post sobre Programação Python.

Até aqui tudo bem?

Agora precisamos tornar as urls dinamicas.

Provavelmente em cada página de Post você tem uma tag ancora nesse estilo:

<a href="pagina_estatica.html">Link</a>

Você teria que dinamizar esse item. Para fazer isso você teria que realizar o seguinte procedimento:

1 - Vamos supor que o usuario acessou a URL: /post/1

2 - Dentro da sua tag precisa ter um template Django que seria responsavel por pegar o ID do post atual e somar +1 para geral o que estará dentro do href

3 - Sua tag resultante seria igual a essa:

<a href="/post/2">Link</a>

Logo, quando você clicar no link ele irá redirecionar para o post Programação Python, que é de ID 2.

Assim você vai criando esse "carrossel" de posts onde um leva ao outro.

Falando de código Django, seria algo semelhante a isso:

<a href="/posts/{{ (post.id) + 1 }}/">Link</a>

Espero que tenha ficado mais claro,

Caso tenha ajudado peço que feche o tópico por favor para que outros alunos com a mesma dúvida consigam encontrar uma solução.

Abs, bons estudos!

Olá Guilherme, desculpe a demora na resposta e obrigado pela explicação!

Só restou mais uma duvidosinha, eu consigo continuar mantendo as urls customizadas do jeito que está hoje? Atualmente elas estão mais ou menos assim: domínio.com.br/blog/assunto-do-artigo.html

Eu preciso ter um cuidado com as urls por causa do SEO e os buscadores não gostam muito de números nas urls.

Abraços,

Airton

solução!

Olá Airton!

Poderia sim, você poderia usar o slug como forma de busca no banco de dados, para isso ele precisaria ser único para cada post.

Dessa forma ao acessar a URL: domínio.com.br/blog/assunto-do-artigo

Ele iria procurar no banco pelo POST correspondente ao slug "assunto-do-artigo" e te retornaria a página correspondente.

Obrigado Guilherme