2021.02.16  

【Django】ページ遷移メソッドの違い(redirect、render、reverse)

Django    

redirectとかrenderとかreverseとか違いが分からんかった

ページ遷移メソッドはどれをどう使えばいいのか分からず結構迷った。
ならば色々調べてまとめておこう思い、記事にした。

redirect

単純に指定したURLに遷移したいときに使用する。

def HogeView(request):
    return redirect('https://hoge.com/')  

サイト内だけでなく、以下のように書けば外部(Google)へ遷移する。

def HogeView(request):
    return redirect('https://google.co.jp')

ちなみに引数の「request」は必須。
指定しないと以下のようなエラーを吐き続ける。

Exception Value: HogeView() got multiple values for argument 'pk'

著者はここでどハマりした。
私のpycharmでは引数を使っていないような表示(薄いグレー)だったので、いらないと思い消していた。要注意。

render

こちらも単純に指定したURLに遷移したいときに使用できる。
ただ、redirectとは違い、こちらには template に context を渡す機能がある。
context(コンテキスト)とはテンプレートに渡される「変数名」から「変数の値」 へのマッピングのこと。

def HogeView(request):
    return render(request, 'myapp/index.html', { 'name': 'taro', })

上記のように定義すると下記htmlの{{ name }}部分にtaroが代入される。

htmlの記述
My first name is {{ name }}
render時の表示
My first name is taro

reverse

URLへの逆変換を行う

url = reverse("myapp:index")
print(url)  # / と表示される

<参考>
https://docs.djangoproject.com/en/3.1/topics/http/shortcuts/#django.shortcuts.render
https://teratail.com/questions/50683
https://qiita.com/taole33/items/1dfc0d46462c9e512385
https://teratail.com/questions/90799
https://djangoproject.jp/doc/ja/1.0/ref/templates/api.html

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信