reverseの考え方について分かりやすく解説【具体的に説明します】

djagnoでコードを書いていると、reverseというメソッドが出てくる時がありますよね。

このreverseの考え方が良く分からないという方もいるのではないでしょうか。
そこで今回は、reverseの考え方について分かりやすく解説していきます。
なお、reverseの具体的な使い方について理解したい方は、reverseの使い方について分かりやすく解説【具体的なコード付き】という記事を参考にして下さい。

reverseはレスポンスからviewを呼び出します

結論からお伝えすると、reverseは、普通の流れとは逆で、レスポンスからviewを呼び出すからreverse、という考え方です。

といっても、これだけでは抽象的で良くわかりませんので、ここから詳しくみていきましょう。
reverseの言葉の意味を考える

まずは、reverseという言葉の意味について考えていきます。

reverseは「逆」という意味があります。

では、「逆」というのは何に対して逆なのでしょうか?

その点について考えていきましょう。

一般的なDjangoの流れをおさらい

「逆」に対する「正」について考えていきましょう。

そのポイントは、Djangoにおける処理の流れです。

Djangoでは、urlを受け取ると、まずはurls.pyファイルがそのurlをみて、対応するviewを呼び出し、viewがresponseを返すという流れでした。

例えば、urls.pyファイルの中のurlpatternsがpath('abc/', somefunc, name='some')だったとしましょう。

すると、デフォルトの場合ではlocalhost:8000/abc/というurlをリクエストすることによって、views.pyファイルの中のsomefuncという関数を呼び出すとういう流れです。

つまり、「リクエストからviewを呼びだす」という流れです。

この流れをまずはおさらいしておきましょう。
reverseの具体的なコードを確認

次に、views.pyファイルの中でreverseを使ったコードを確認していきましょう。

一応、urls.pyファイルもまとめて書いておきます。

[コード]

-urls.py
urlpatterns = [
    path('abc', somefunc, name='some'),
    path('', homefunc, name='home')
]

「home」に関連したコードが書かれていることを注意してみましょう。

このurlは、ホーム画面というイメージを持っていただければと思います。

次にviews.pyファイルです。

[コード]

-views.py
def somefunc(request):
    【何らかの処理】
    return reverse('home')

最後の行のreturn reverse('home')という部分に注目してください。

このsomefuncが呼び出されると、【何らかの処理】が実行され、'home'に関連したviewが呼び出されるという流れです。
reverseを理解する

再度見ていきましょう。

ここでは、reverse('home')と書かれていますが、これを違う見方で考えていきましょう。

この流れは、レスポンスからviewを呼び出すと言い換えることができます。

なぜなら、リクエストを受け取って何らかの処理をした後に、再度renderメソッドでviewを呼び出しているからです。

普通の流れがリクエストからviewを呼び出すというのに対し、今回はレスポンスからviewが呼び出されました。

だからこそ、「逆」という意味のreverseが使われているのです。

reverseのまとめ



(1) reverseは「逆」という意味

(2) その名の通り、普通とは逆の流れで処理をするということ

(3) 具体的には、リクエストからviewを呼び出すのが正しい流れに対し、レスポンスからviewを呼び出すのがrender

~Django無料講義~のご案内

Code for Djangoが、4時間超の無料Django講義をはじめました
 
・本を出版したCode for Djangoの
 製作者が作ったサイトです。
 
・Code for Djangoの内容も、
 動画で詳しく解説しています。
 
・動画は順次ふやしていきますので、
 ただで学び続けることが可能です。
 
・Djangoの効率的なスキルアップに、
 是非お役立て下さい。

                                                                 Django講義はこち
Created with