質問: [ # ex: /polls/ path('', views.index, name='index'), # ex: /polls/5/ path('/', views.detail, name='detail'), path('/detail/', views.detail, name='detail'), # ex: /polls/5/results/ path('/results/', views.results, name='results'), # ex: /polls/5/vote/ path('/vote/', views.vote, name='vote'), ] ``` ちなみにフォルダ構成はこうなっています。 が、Djangoで作成するとしてチュートリアルをこなしていますが、変な形だな...と思っています。 ディレクトリ的に同じディレクトリに入らないのかな?という意味です。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/9218cd9d26d9da9446c81af7d5ddda5b.png) ### 補足情報(FW/ツールのバージョンなど) Python 3.7.2 (default, Dec 29 2018, 00:00:04) django.VERSION(3, 0, 2, 'final', 0)
回答: おそらく、ちょうど同じチュートリアルをやっている者ですが、 いつもteraterilに助けられているので、微力ながらわかる範囲で回答します。 まず、質問に提示されている情報から、あまり仕組みについて理解されていないと思います。 djangoでの画面描画までの簡単な流れとしては、クライアントでURLを叩くと、 URLの内容についてurls.pyのurlpatternsで該当する内容があれば、対象のビューが実行されます。 よって、localhost:ポート/polls/34でアクセスしようとすと、polls/urls.pyのpathの中で、 当てはまる、 ex: /polls/5/ path('/', views.detail, name='detail'), が実行されます。 example(例)とコメントに書かれているように、例えば/polls/5ならばこのpathが適用されるわけですが、 コードを見ると、そもそもlcoalhsot:ポート/polls/34のpollsの部分について記載がありません。 これは、なぜかというと、プロジェクト側のmysite/urls.pyがまず実行されて、/polls/urls.pyを実行しているからです。 よって、まずは、/polls/urls.pyに導いている、/mysite/urls.pyの内容が問題ないか、というところです。 しかし、チュートリアルをここまで進めれているということを考えれば、/mysite/urls.pyの 内容は問題ないと推測できます。 次は、先程書いたように、/polls/34にアクセスしたときに呼び出される、views.detailの部分です。 polls/urls.pyの上部にはfrom . import viewsという記述がありますので、 .(urls.pyと同じ階層)にあるviews.pyに記載されているdetailが実行されます。 なので、ひとまずは、ビューのdetailの内容がチュートリアルの指示通りに記載されているか、ということを調べれば良いのではないでしょうか。