ここからは、Todoアプリを作っていきますう。
本棚アプリでは、DetailViewとListViewを使いました。
Todoアプリでは、さらにTodoを作るためのCreateViewと、Todoを削除するためのDeleteViewを作っていきます。
また、HTMLファイルを効率的に表示するためのブロックという考え方や、それぞれのhtmlファイル間のリンクの書き方についても学んでいきます。
早速勉強を進めていきましょう!
プロジェクトの作成とListViewの作成
まずは、プロジェクトとアプリを作った上で、ListViewを作っていきましょう。
コマンドライン$ mkdir todo
$ cd todo
$ django-admin startproject todoproject .
$ python manage.py startapp todo
コード-BASE/todoproject/settings.py
INSTALLED_APPS = [
...
'todo', ← new!
]
TEMPLATES = [
...
'DIRS': [BASE_DIR, 'templates'] ← new!
]
次に、urls.pyの設定を進めていきます。
コード-BASE/todo/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('todo.urls')),
]
次に、models.pyの設定を進めていきましょう。
コード-BASE/todo/models.py
from django.db import models
class TodoModel(models.Model):
title = models.CharField(max_length=100)
content = models.TextField
pic = models.ForeignKey(
'auth.User',
on_delete=models.CASCADE
)
今回はTodoModelというクラス名にし、title、content、picという3つのフィールドを作りました。
新しく出てきたのが、models.Foreginkeyです。これは、違うモデルのフィールドを使いたいときに用いるものです。
models.Foreignkeyの下の行にauth.Userと書かれています。このauth.Userとは、djangoがデフォルトで備えているauthモデルのUserテーブルのことです。
つまり、このtodoモデルは、Userのデータと関連付けてデータを管理するようにしています。
最後の行のon_deleteは、データを削除したときにどういった動きをするのかという点について決めるものです。
models.CASCADEの場合、関連付けられている2つのテーブル(UserテーブルとTodoModelテーブル)の情報がまとめて削除されます。
例えば、Userテーブルのaさんが、5つのTodoを作っていたとします。
そして、Userテーブルのaさんの情報が削除されると、aさんが書いていた5つのTodoの情報も一緒に削除されるということです。
Todoを削除することでuserの情報が消えるのではなく、Userのデータを消すことで、Todoの情報も合わせて消されるという点を頭に入れておきましょう。
ListViewを作る
次に、ListViewを作っていきましょう。
コード-BASE/task/views.py
from django.shortcuts import render
from .models import TodoModel
from django.views.generic import ListView
class TodoView(ListView):
model = TodoModel
template_name = 'list.html'
views.pyも、前回の記事の内容とほとんど同じです。
次に、viewとurlをひもづけていきましょう。
コマンドライン-BASE/todo
$ touch urls.py
コード-BASE/todo/urls.py
from django.urls import pathv
from .views import TodoView
urlpatterns = [
path('list/', TodoView.as_view(), name='list'),
]
あとは、list.htmlファイルを作ればlocalhost:8000/todo/listとブラウザに打つことでlistを表示させることができます。
これでベースの作成は完了です。お疲れさまでした。
同じようなコードを書くことが多いですので、少しずつなじんできたのではないでしょうか。
次の記事では、htmlファイル見た目を効率的に制御するために、ブロックの使い方について学んでいきましょう。