"{% url 'detail' list.pk %}"の意味
ここから、djangoでurlをコントロールしていく方法について説明していきます。
コードを一つずつ見てみましょう。
[コードの解説]
(1) まず、1行目と11行目で{% %}で囲み、blockとendblockと書きました。
これは、base.htmlの内容を生かしつつ、base.htmlのファイルのblockの中今回指定したブロックの中身を入れるようにしています。
(2) 2行目で、for文を使ってTodoのデータを一つずつ取り出しています。そして、取り出したデータはlistという変数の中に順番に入れていくようにしています。
(3) 次にurlです。5行目を見てみましょう。
これは、urlの情報を表示するようにdjangoに指示するために使われます。
urlの次に''で囲まれている部分が、具体的に表示するviewの内容です。この5行目では、'detail'と書かれています。
これは、urls.pyファイルの中で指定したname='detail'の部分です。
改めてurls.pyの該当部分を見ていきましょう。
[コード]urlpatterns = [
path('detail', TodoDetailView.as_view(), name='detail'),
]
上記のname='detail'という部分に注目してください。このように指定をすることで、'detail'を使うことで対象となるurl(ここではTodoDetailViewで指定しているtemplate_name)を呼び出すことができるようになるのです。
最後にlist.pkですが、これは個別の個別のデータののprimary keyを示しています。
本棚アプリのところで、詳細ページを表示するためにはprimary keyを指定しなければいけなかったという点を覚えているでしょうか。
詳細ページを表示するには、どの番号のTodoかを指定する必要がありますので、ここで指定しているのです。
編集画面と削除画面に関するurlも同じ考え方です。
設定をしたうえで、最後に詳細画面を作ってTodoアプリの完成です。
[コード]BASE/templates/detail.html
{% extends 'base.html' %}
{% block header %}
<h1>Todo詳細画面</h1>
{% endfor %}
{% block content %}
<p>タイトル:{{ object.title }}</p>
<p>Todoの内容{{ object.content }}</p>
<p>担当者:{{ object.pic }}</p>
{% endblock %}
この内容も本棚アプリで作ったものとほとんど同じです。
これでTodoアプリが完成しました。
サーバーを立ち上げてサイトを見てみましょう。動画で一連の流れを確認してみて下さい。
Media error: Format(s) not supported or source(s) not found
ファイルをダウンロード https://codor.co.jp/django/wp-content/uploads/2019/01/bandicam-2019-01-29-13-40-17-826.mp4?_=1
実際にブラウザ上で動いているのを見ると、アプリを作ったというイメージがわきますよね!
Todoリストの作成、お疲れさまでした。