(最終更新月:2021年11月)
「データを削除するページを作ったが、実行後のページ移行がうまくいかない!」
「データを保存した後にリストページへ戻りたい!」
などとお考えのDjango初学者へ向けた記事となります
当記事では、
- redirectメソッドの使い方
を解説します
一度覚えればとてもカンタンです
記述の仕方から、実際のコードを見ていきましょう!
created by Rinker
¥3,850
(2024/11/20 19:33:07時点 楽天市場調べ-詳細)
redirectメソッドの使い方
redirectの使い方は下記の通りです。
- メソッドのインポート
- view関数でredirectメソッドを返す
redirectメソッドは引数として、以下のどちらでも使用できます。
- URL
- ページ名
当記事では、こちらのとおり、urlpatternsで設定した名前で返すことをおすすめします。
redirect(ページ名)
なぜなら、ページ名なら、URLを変更しても自動的に対応してくれるから。
やり方を見ていきましょう。
コードを見てみよう!
当記事では、日報アプリ開発で作成した3つのview関数で、redirectを設定していきます。
- 新規保存:クリエイトビュー
- 上書き保存:アップデートビュー
- 削除:デリートビュー
まずはviews.pyでメソッドをインポートして進めていきましょう。
from django.shortcuts import redirect
nippoCreateFormView
def nippoCreateFormView(request):
template_name = "nippo/nippo-form.html"
form = NippoFormClass(request.POST or None)
ctx = {"form": form}
if form.is_valid():
title = form.cleaned_data["title"]
content = form.cleaned_data["content"]
obj = NippoModel(title=title, content=content)
obj.save()
return redirect("nippo-list")
return render(request, template_name, ctx)
nippoUpdateFormView
def nippoUpdateFormView(request, pk):
template_name = "nippo/nippo-form.html"
obj = get_object_or_404(NippoModel, pk=pk)
initial_values = {"title": obj.title, "content":obj.content}
form = NippoFormClass(request.POST or initial_values)
ctx = {"form": form}
ctx["object"] = obj
if form.is_valid():
title = form.cleaned_data["title"]
content = form.cleaned_data["content"]
obj.title = title
obj.content = content
obj.save()
if request.POST:
return redirect("nippo-list")
return render(request, template_name, ctx)
nippoDeleteView
def nippoDeleteView(request, pk):
template_name = "nippo/nippo-delete.html"
obj = get_object_or_404(NippoModel, pk=pk)
ctx = {"object": obj}
if request.POST:
obj.delete()
return redirect("nippo-list")
return render(request, template_name, ctx)
全ての関数内では共通して、以下を追記してます。
return redirect(“nippo-list”)
※アップデートビューについては「if request.POST:」も追加してますので、参考にしてください
まとめ
redirectメソッドを使うには、以下のステップが必要です。
- インポート「from django.shortcuts import redirect」
- 実行「redirect(ページ名)」
覚えておきましょう!
次回は、「test.py」を使ってこれまでに作成してきたview関数が正しく機能するかを確認する自動テストプログラムの書き方、について解説していきます!
今後のアプリ開発においてとても重要ですので、是非目を通しておくことをオススメします!