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

Quando usar redirect ou render?

As vezes o professor usa o render ou o redirect, qual a diferença dos dois?

1 resposta
solução!

Olá Davi, tudo bem com você?

Peço desculpas pela demora no retorno.

Abaixo uma explicação breve sobre os dois métodos.

  • render(): Combina um determinado modelo com um determinado dicionário de contexto e retorna um objeto do tipo HttpResponse com esse texto renderizado.

  • redirect(): Retorna um HttpResponseRedirect para a URL apropriada para os argumentos passados.

Explicação com exemplos

Para esse exemplo usarei a função dashboard presente no arquivo usuários/views.py essa função tem como objetivo criar uma página que contém as receitas do usuário que está logado em nosso site. Analisaremos os dois retornos dessa função.

O primeiro retorno (return) é declarado da seguinte forma:

return render(request, 'usuarios/dashboard.html', dados)

Onde temos:

  • render(): Função de renderização de página.
  • request: Requisição.
  • 'usuarios/dashboard.html': Modelo
  • dados: Dicionário.

Esse primeiro retorno deve usar a função render() para renderizar uma nova página a partir do modelo dashboard.html presente na pasta usuários, essa nova página deve ser preenchida com os dados presente no dicionário dados, ou seja, a função render() tem como objetivo renderizar (criar) uma nova página e preenchê-la com dados presentes em um determinado dicionário.

O segundo retorno (return) foi declarado da seguinte forma:

return redirect('index').

Onde temos:

  • redirect: Função de redirecionamento de página.
  • 'index': Página para qual o usuário será redirecionado.

Nesse segundo retorno, o usuário será redirecionado para a página index, sem que seja passado novas informações já que a página index já fora renderizada em outro momento, podemos considerar que a página index já foi criada e não precisamos modificá-la, apenas direcionar o usuário (redirect) para a página index e exibi-la.

Em resumo temos que iremos usar a função render() quando queremos renderizar uma nova página recebendo dados através de um dicionário e usaremos a função redirect() quando queremos redirecionar o usuário para uma página já renderizada.

Caso queira conhecer um pouco mais dos argumentos usados nas duas funções, você pode acessar a documentação Django pelos links abaixo.

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!