2016-10-08 5 views
5

Djangoのrender()とredirect()の違いは何ですか?

def post(self, request, *args, **kwargs): 
    if form.is_valid(): 
     order = form.save(commit=False) 
     order.user = request.user 
     order.save() 
     return redirect('orders:success') 

def post(self, request, *args, **kwargs): 
    if form.is_valid(): 
     order = form.save(commit=False) 
     order.user = request.user 
     order.save() 
     return render(
      request, 
      'orders/success.html', 
      {} 
     ) 

の違いは何私は、これらは全く同じだと思います。

違いがありますか?

+2

に見て、あなたは、彼らが同じだと思うなぜそれは非常に不可解です。 –

+0

初心者として私は、なぜ彼らが同じだと思うのかはっきりしていると思います。すなわち、より具体的には、なぜこのケースで同じ最終結果をもたらすのでしょうか。私はどちらが優先されているのか把握しようとしています... –

答えて

3

あなたがページを要求し、render機能がそれを返す関数Combines a given template with a given context dictionary and returns an HttpResponse object with that rendered text.

をレンダリングします。

redirect機能は、指定されたURLに別の要求を送信します。

3

どちらもリダイレクトによって、あなたが渡した引数の のHttpResponseRedirectが得られます。

return redirect('https://example.com/') 

は、テンプレート 'result.html' にコンテキスト辞書をレンダリングし、そのレンダリングされたテキスト

でHttpResponseオブジェクトを返します

return render(request,'/result.html',{'foo':'bar'}) 

https://example.com/ページに移動します

result.html ... {foo} ...fooが詳細についてはバー に置き換えますは、これらの2つの完全に異なるものです。このdjango docs

関連する問題