reverseは便利なメソッドですが、具体的にどのように使えるのかがまとまっていると分かりやすいですよね。
そこで今回は、renderメソッドの使い方を具体的なコードと共にお伝えしていきます。
reverseの基本的な考え方について理解したい方は、reverseの考え方について分かりやすく解説【具体的に説明します】という記事を参考にして下さい。
reverseは名前からurlを呼び出すときに使います
まずはreverseの基本的な使い方をおさらいしましょう。
reverseは名前からurlを呼び出すときに使います。
もう少し具体的にお伝えすると、reverse('home')とした場合、urlpatternsでname='home'と指定したurlを呼び出すという形です。
ここから、その具体的な使い方についてみていきましょう。
前提の整理
まずは前提の設定条件を整理していきましょう。
コード-urls.py
urlpatterns = [
path('booklist/', views.list, name='list'),
path('bookdetail/<int:pk>', views.detail, name='detail'),
path('', views.home, name='top'),
]
リストのページと詳細のページ、それとトップページを作るようなイメージです。
次に、実際の使い方について一つずつみていきましょう。
基本の使い方
まずは一番基本的な使い方です。
コード-views.py
def list(request):
【何らかの処理】
reverse('top')
このように書くことで、listメソッドが呼び出された後、トップページが表示されます。
viewを直接呼び出しても良い
上の例では、name='top'のtopからviewを呼び出しましたが、viewを直接呼び出すこともできます。
コード-views.py
def list(request):
【何らかの処理】
reverse(views.home)
この場合、アプリのviewsをimportしないとエラーが出てしまうということに注意しましょう。
引数を与えることもできる
reverseは、引数を同時に与えることもできます。
コード-views.py
def list(request):
【何らかの処理】
reverse('detail', args=[1])
これは、idが1のdetailviewを呼び出しています。
キーワード引数も使える
また、キーワード引数を使うこともできます。
コード-views.py
def list(request):
【何らかの処理】
reverse('detail', kwargs={'pk': 1})
これは上記の引数を取った場合と同じになりますが、pkを1としてdetailviewを呼び出しています。
(引数とキーワード引数は、同時に与えることはできないという点は注意しておきましょう。)