Para fazer a busca por tags funcionar no seu projeto Django sem transformar as tags em botões, você pode usar links (<a>
tags) com parâmetros de URL. Aqui está um exemplo de como você pode modificar o seu código HTML e adicionar um pouco de JavaScript para tornar as tags clicáveis e redirecionar para uma página de busca com o parâmetro desejado.
Passo 1: Modificar o HTML
Você vai envolver cada tag em um elemento <a>
que aponta para a URL de busca com o parâmetro da tag.
<section class="tags">
<p class="tags__titulo">Busque por tags:</p>
<ul class="tags__lista">
<li class="tags__tag"><a href="/buscar?tag=Nebulosa">Nebulosa</a></li>
<li class="tags__tag"><a href="/buscar?tag=Estrela">Estrela</a></li>
<li class="tags__tag"><a href="/buscar?tag=Galáxia">Galáxia</a></li>
<li class="tags__tag"><a href="/buscar?tag=Planeta">Planeta</a></li>
</ul>
</section>
Passo 2: Configurar a URL no Django
No seu arquivo urls.py
, você precisa adicionar uma rota que capte o parâmetro tag
.
from django.urls import path
from . import views
urlpatterns = [
path('buscar/', views.buscar, name='buscar'),
]
Passo 3: Criar a View
Em views.py
, você deve criar a função que será chamada quando a URL for acessada. Essa função irá capturar a tag passada como parâmetro e você pode usá-la para buscar os dados relacionados.
from django.shortcuts import render
def buscar(request):
tag = request.GET.get('tag', '')
# Aqui você busca os dados relacionados à tag
resultados = Modelo.objects.filter(tag__icontains=tag) # Modifique conforme seu modelo de dados
return render(request, 'resultado_busca.html', {'resultados': resultados})
Passo 4: Criar o Template de Resultado
Finalmente, você deve criar um template resultado_busca.html
que exiba os resultados da busca.
<h2>Resultados para '{{ tag }}'</h2>
<ul>
{% for resultado in resultados %}
<li>{{ resultado.nome }}</li> <!-- Modifique conforme os atributos do seu modelo -->
{% endfor %}
</ul>
Esse setup simples irá permitir que você clique em qualquer tag e seja redirecionado para uma página de resultados correspondentes à tag selecionada, mantendo o layout original sem usar botões e utilizando a funcionalidade completa de Django para gerenciar os parâmetros de URL e a busca no banco de dados.