• はじめに

    ここからは、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ファイル見た目を効率的に制御するために、ブロックの使い方について学んでいきましょう。

     

    ~Django無料講義~のご案内

    Code for Djangoが、4時間超の無料Django講義をはじめました

    •  ・本を出版したCode for Djangoの
       製作者が作ったサイトです。
    •  ・Code for Djangoの内容も、
       動画で詳しく解説しています。
    •  ・動画は順次ふやしていきますので、
       ただで学び続けることが可能です。
    •  ・Djangoの効率的なスキルアップに、
       是非お役立て下さい。