1
resposta

[Sugestão] [Sugestão] Melhoria em filtro para buscar.html

Um detalhe que pode ter passado despercebido é que a funcionalidade de filtro também estaria supostamente disponível para a opção de busca no projeto final, assim, eu decidi implementar de um método um pouco diferente, mas ainda assim usando o conceito de GET e a tag

, segue sugestão de código usado

buscar.html:

{% extends 'shared/base.html' %}
{% load static %}
{% block content %}
            <section class="conteudo">
                <section class="banner">
                    <img class="banner__imagem" src="{% static '/assets/imagens/Banner(2).png' %}" alt="banner Alura Space">
                    <h1 class="banner__titulo"> A galeria mais completa de fotos do espaço!</h1>
                </section>
                <section class="tags">
                    <p class="tags__titulo">Busque por tags:</p>
                    <ul class="tags__lista">
                        <form action="{% url 'buscar' %}" method="GET">
                            <input type="hidden" name="buscar" value="{{ request.GET.buscar }}">
                            <button class="tags__tag" type="submit" name="categoria" value="">Todos</button>
                            <button class="tags__tag" type="submit" name="categoria" value="NEBULOSA">Nebulosa</button>
                            <button class="tags__tag" type="submit" name="categoria" value="ESTRELA">Estrela</button>
                            <button class="tags__tag" type="submit" name="categoria" value="GALÁXIA">Galáxia</button>
                            <button class="tags__tag" type="submit" name="categoria" value="PLANETA">Planeta</button>
                        </form>
                    </ul>
                </section>
                <!-- Todo o resto do código -->

views.py

@login_required(login_url='login')
def buscar(request):
    fotografias = Fotografia.objects.order_by("data_fotografia").filter(publicada=True)

    if "buscar" in request.GET:
        nome_a_buscar = request.GET['buscar']
        if nome_a_buscar:
            fotografias = fotografias.filter(nome__icontains=nome_a_buscar)
    if "categoria" in request.GET:
        categoria = request.GET['categoria']
        if categoria:
            fotografias = fotografias.filter(categoria__icontains=categoria)

    return render(request, "galeria/buscar.html", {"cards": fotografias})
1 resposta

Oi, dev! Tudo bem?

Obrigada por compartilhar a sua sugestão de código para a funcionalidade de filtro com a gente aqui no fórum. É muito bom ver que você está explorando diferentes maneiras de implementar essa funcionalidade. Somado a isso, compartilhar essas soluções ajuda a fortalecer a nossa comunidade!

Caso tenha restado alguma dúvida em relação a algum conteúdo do curso ou atividade, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!