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.