As vezes o professor usa o render ou o redirect, qual a diferença dos dois?
As vezes o professor usa o render ou o redirect, qual a diferença dos dois?
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': Modelodados: 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.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.