#はじめに
今回の記事では「TodoList」の詳細ページを表示していこうと思います。
対象者としては、Djangoの学習を始めたばかりの人を考えています。
前回までの記事にも目を通していただけるとスムーズに進められると思います。
前回までの記事
↓
↓
↓
PycharmでDjangoでアプリケーションを作成する手順~準備編~
#urls.pyの編集
まずは'urls.py'にURLの繋ぎ込みを行っていきます。
アプリケーションの'urls.py'を開いてください。
(デフォルトでは用意されていないので作成していない方は、ターミナルに次のように打ち込んでください。)
#アプリケーションディレクトリに移動
$ cd アプリケーション名 #今回は「todo」
#urls.pyの作成
$ touch urls.py
'urls.py'を開いたら(作成できたら)、次のように追記してください。
from django.urls import path
from .views import TodoList, TodoDetail
urlpatterns = [
path('list/', TodoList.as_view()),
path('detail/<int:pk>/', TodoDetail.as_view()), #詳細画面の繋ぎ込み
]
'int:pk'とは、どのデータを表示するのか指定するものです。
あとで実際に入力しますが、URLの末尾に'detail/1/'と付け足すことで、1つ目のデータが表示されます。
ちなみに管理画面で一つ一つのデータの詳細を見ると、URL部分nの末尾に数字が表示されているのを確認できます。
'TodoDetail.as_view'は’view.py’にある'TodoDetailクラスを持ってくると思ってもらえたら良いです。
#view.pyの編集
次に'view.py'を編集していきます。
from django.shortcuts import render
from django.views.generic import ListView, DetailView #DetailViewをインポート
from .models import TodoModel
class TodoList(ListView):
template_name = 'list.html'
model = TodoModel
class TodoDetail(DetailView): #TodoDetailクラスを定義
template_name = 'detail.html' #'template'は'detail.html'を指定
model = TodoModel #モデルは'TodoModel'を指定
前回の記事でも説明した通り、'views.py'は材料を集めるために動くものなので、'tempalte'とモデルの指定を行っています。
#models.pyの編集
前回作成した'models.py'から少し変更を加えるので、次のように追記してください。
from django.db import models
from django.utils import timezone
class TodoModel(models.Model):
title = models.CharField(max_length=50)
content = models.TextField()
deadline = models.DateTimeField(default=timezone.now)
これで編集は完了です。
#表示
それでは早速表示できているか確認していきましょう。
ターミナルに次のように打ち込んでください。
$ python manage.py runserver
URLが表示されるのでそれをクリックするとブラウザに飛びます。
ブラウザに飛んだら、URLの末尾に'detal/1/'と付け足してください。
そうすると一番最初に登録したデータの中身が表示されているのが確認できるはずです。
#終わりに
今回は一つ一つのデータの詳細画面を表示することをしました。
今後も記事を追加していくので、参考にしていただければ幸いです。