お世話になります。
現在Djangoでブログサイトを作成しています。
投稿記事の一覧ページに記事のタイトルと記事の詳細画面へのリンクを作り、クリックすると記事の詳細ページを表示させる処理を行いたいですが、Django内部での処理がイメージつかないため、書き方が分からず困っています。
ちょうどこちらの一般サイトに似たような処理が書かれているので、例として引用させて頂きます。
このサイトを例に取ると、アプリケーションのurls.pyに以下の記載があり、views.pyへと処理を渡す記述があります。
from django.urls import path from . import views app_name = 'blogs' urlpatterns = [ path('', views.index, name='index'), path('detail/<int:blog_id>/', views.detail, name='detail'), ]
上記コードの解説は以下のように記載されています。
トップページからのリンクで、変数blog_idには数字が代入された状態で情報を受け取っているので、ここにはその数字が自動的に入力されることになります。また、ここに入った数字は変数blog_idに代入されてViewに渡されます。これで、URLhttp://127.0.0.1:8000/detail/1のページではid=1の記事の詳細ページを表示する準備をしています。ただし、まだViewやHTMLファイルを作っていないので、現段階でこのURLにアクセスしてもエラーが出ます。
第二引数は、1つ上のpathと同様のことをしています。このURLでは、views.pyファイルのdetail関数が処理されることを意味しています。
第三引数は、このURLにdetailという名前をつけています。名前をつけることで、<a href="{% url 'blogs:detail' blog_id=blog.id %}">記事を読む</a>のリンクをクリックした時にこのpathに飛ぶようになります。
なぜトップページからのリンクを貼ると変数blog_idに自動的に数字が代入されるのでしょうか?
また、urls.pyの中のトップページを表す記述(上記でいうとpath('', views.index, name='index'))からviews.pyのindex関数へ処理が飛ぶのは理解できますが、トップページを表す記述から詳細ページを表示する際、どのような処理が行われるのかイメージが付きません。(urls.pyからviews.pyのindex関数が呼ばれ、その後に再びurls.pyへ処理が飛んで、最後にviews.pyののdetail関数が処理される?)
どなたか教えて下さい。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/08 15:44
2020/06/08 21:34
2020/06/08 21:35
2020/06/09 14:01