【Django(初学者向け)】超カンタン!指定のページへリダイレクト「redirect」メソッドの使い方を解説

Django

(最終更新月:2021年11月)

「データを削除するページを作ったが、実行後のページ移行がうまくいかない!」

「データを保存した後にリストページへ戻りたい!」

などとお考えのDjango初学者へ向けた記事となります

当記事では、

  • redirectメソッドの使い方

を解説します

一度覚えればとてもカンタンです

記述の仕方から、実際のコードを見ていきましょう!

redirectメソッドの使い方

redirectの使い方は下記の通りです

  • メソッドのインポート
  • view関数でredirectメソッドを返す

redirectメソッドは引数として、

  • URL
  • ページ名

のどちらでも使用可能です

当記事では

redirect(ページ名)

と、urlpatternsで設定した名前で返すことをオススメします

コードを見てみよう!

当記事では、日報アプリ開発で作成した3つのview関数(新規保存、上書き保存、削除)でredirectを設定していきます

まずはviews.pyでメソッドをインポート

from django.shortcuts import redirect

それぞれ見ていきましょう

【nippoCreateFormView】

def nippoCreateFormView(request):
    template_name = "nippo/nippo-formclass.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-formclass.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 imoprt redirect
  • 実行「redirect(ページ名)

が必要になることを覚えておきましょう!

次回は、「test.py」を使ってこれまでに作成してきたview関数が正しく機能するかを確認する自動テストプログラムの書き方、について解説していきます!

今後のアプリ開発においてとても重要ですので、是非目を通しておくことをオススメします!

当ブログでは、日報アプリ開発を通じて、Webアプリを一から開発し公開するまでを初学者の方でもわかるようにと記事を連載しています

「Djangoでのアプリ開発を学びたい!」
「Djangoで開発したアプリをWebで公開するにはどうするの?」

という方は必見です!

【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!
タイトルとURLをコピーしました