• 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の効率的なスキルアップに、
       是非お役立て下さい。