Olá pessoas. Compartilho minha sugestão a fim de evitar repetição de código pra aplicar o conceito de DRY, como já questionado em outro tópico. Não sei se mais a frente terá alguma funcionalidade a mais para a página de busca (espero que não kkkk).
Pra isso não tive que criar outra view, template, nem url, uma vez que aproveito o index já disponível.
Na minha views.py, no próprio index, fiz a verificação se existe o parâmetro de pesquisa na url. Se existir, aplica o filtro de search. Se não, traz tudo, como já funcionava antes. Apliquei, também, outra ideia que comentaram no fórum, de não trazer todos os registros do BD para, só depois, filtrar. Dessa maneira, já traz do BD apenas os arquivos que correspondem à busca.
if 'search' in request.GET:
photographs = Photograph.objects.filter(title__icontains=request.GET['search'], active=True).order_by('-date_upload', 'title')
else:
photographs = Photograph.objects.order_by('-date_upload', 'title').filter(active=True)
por fim, no _ _header.html, coloquei o value da busca pra quando estiver exibindo resultado da busca.
<form action="{% url 'home' %}" method=" get">
<input class="busca__input text_search" type="text" name="search" placeholder="O que você procura?"
value="{{ request.GET.search }}">
<button type="submit" class="null_style__button">
<img class="busca__icone" src="{% static '/assets/ícones/1x/search.png' %}" alt="ícone de search">
</button>
</form>
Espero não ter esquecido de nenhum detalhe, mas tá aí. Acredito que possa contribuir pra quem queira aproveitar a página de index pra exibir o filtro da busca.