【Django[view.py]】 render関数、redirect関数、reverse_lazy、TemplateResponse の違い

Django

render関数とredirect関数

render()

render()は「結果をウェブページに表示」する機能

return render(request, template, context)

第一引数で「requestオブジェクト」を受け取り、 第二引数で「表示するhtmlテンプレート」を指定し、 第三引数で「テンプレートに渡す変数」を指定します。

redirect()

redirect()は「どのURLを開くか指定」する機能

return redirect('app_name:view_name', id=id)

第一引数で「移動先のURL」を指定し、 第二引数で「urls.pyに渡す変数」を定義します。

TemplateResponseとreverse_lazy

これらはクラスベースビュー版のrender()とredirect()と考えて良いと思います。

○TemplateResponse → render()

○reverse_lazy → redirect()

reverse_lazy

success_url = reverse_lazy(‘app_name:view_name’)

単純にリダイレクト先のURLを指定するのみです。 つまり役割がredirect()と同じだと分かります。

タイトルとURLをコピーしました