Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Refencia do 'Buscar'

Ao que 'buscar' se refere? a url? ao input?

def buscar(request):
    lista_receitas = Receita.objects.order_by('-date_receita').filter(publicada=True)

    if 'buscar' in request.GET:
        nome_a_buscar = request.GET['buscar']
        if nome_a_buscar:
            lista_receitas = lista_receitas.filter(nome_receita__icontains=nome_a_buscar)

    dados = {
        'receitas' : lista_receitas
    }

    return render(request, 'buscar.html', dados)
1 resposta
solução!

Olá, tudo bem com você?

Peço desculpas pela demora em lhe responder.

A string buscar faz referência ao atributo name= da tag input presente no arquivo receitas/buscar.html

Ela tem como função verificar o retorno da requisição do tipo GET, por padrão no Django requisições do tipo GET retorna um dicionário, adicionando o atributo name= da tag input como sua chave, e o valor desta chave será o que foi informado pelo usuário no momento da busca.

Assim usamos a estrutura condicional if para verificarmos se a string buscar está presente na requisição GET, if 'buscar' in request.GET, caso esteja, será coletado o valor presente na chave buscar do dicionário da requisição GET e atribuímos esse valor a variável nome_a_buscar, nome_a_buscar = request.GET['buscar'].

Logo após é realizado o filtro buscando por receitas que contém o valor informado pelo usuário, criando assim uma nova lista de receitas com os resultados caso existam, lista_receita = lista_receita.filter(nome_receita__icontains=nome_a_buscar).

Essa lista é atribuída como um valor para a chave 'receitas' do dicionário dados, assim a renderização da página acontece a partir da chave receitas

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!