『.』を付けてプロジェクトを実行する
projectを作るフォルダ(todo)を作ってから、そのフォルダ下で
1 |
django-admin startproject todoproject . |
こうすると余計なフォルダが作成されない。
出来たフォルダはこう。

アプリを作る
1 |
python3 manage.py startapp todo |
するとこんなファイルが出来る

setting.pyを編集する
『todoproject』の方のこれを
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] |
こう
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR, 'templates'], # 追記 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] |
ここの部分も
1 2 3 4 5 6 7 8 |
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] |
こう
1 2 3 4 5 6 7 8 9 |
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'todo', # 追記 ] |
templatesフォルダを作成する
1 |
mkdir templates |
作成箇所はここ

urlのつなぎこみ
1 |
touch urls.py |
でtodo下に作成

todoproject > urls.py を
1 2 3 4 5 6 7 8 |
from django.contrib import admin from django.urls import path, include # ↑追記 urlpatterns = [ path('admin/', admin.site.urls), path('', include('todo.urls')), # 追記 ] |
pathの中身の”は、『urlの記載が無い時に呼び出すもの』の定義
models.pyを書いていく
ここのやつ

その他例としてdijango モデル フィールド 種類 でググってみるのもよし
1 2 3 4 5 6 |
from django.db import models # Create your models here. class TodoModel(models.Model): title = models.CharField(max_length=100) memo = models.TextField() |
makemigrationsとmigrate
makemigrationsを作る事で、models.pyのエラーの内容?変な挙動が把握できるらしい。そのコマンドが「migrate」
todo.pyのある階層で
1 |
python3 manage.py makemigrations |
エラーが出るのでtodoの中のurls.pyを修正する

1 2 3 4 5 6 7 |
from django.urls import path from .view import todo urlpatterns = [ path('a/', todo), ] |
views.pyも修正

1 2 3 4 5 6 7 |
from django.shortcuts import render from django.http import HttpResponse # Create your views here. def todo(request): return HttpResponse('') |
あらためて
1 |
python3 manage.py makemigrations |
色々できました

さらにデータベースに書き込みを行うためのコマンドを入力
1 |
python3 manage.py migrate |
admin/に入れるスーパーユーザーを作成
todoフォルダのところ
manage.pyが見えるところで
1 |
python3 manage.py createsuperuser |
パスワードだけ簡易なものを設定して、サーバーを立ち上げる
1 |
python3 manage.py runserver |
で起動してから、http://127.0.0.1:8000/adminにアクセス

これで入っちゃう
admin.pyを変更する

1 2 3 4 5 6 |
from django.contrib import admin from .models import TodoModel # Register your models here. admin.site.register(TodoModel) |
管理画面に入りリロードをすると
これが

こうなる

Todo models の +add をクリック

「買い物をする」 「卵を買う」等2つTodoを記載する

以下で見え方を調整していく
models.py

こうすると
1 2 3 4 5 6 7 8 |
from django.db import models # Create your models here. class TodoModel(models.Model): title = models.CharField(max_length=100) memo = models.TextField() def __str__(self): return self. |
こうなる

さらにこうして
1 2 3 4 5 6 7 8 |
from django.db import models # Create your models here. class TodoModel(models.Model): title = models.CharField(max_length=100) memo = models.TextField() def __str__(self): return self.title |
こうしてリロード

ListViewを設定する
linkの設定をする
いままでの部分を振り返ると
todoproject>urls.pyは

1 2 3 4 5 6 7 8 |
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('todo.urls')), # ここの部分は ] |
の
path(”, include(‘todo.urls’)),
は、『”(シングルクオート2つ)』は、つまり、urlにパスが入っていない場合はtodo>urlsを呼び出します。
という意味になる。
なので呼び出し先のurls.pyをこの状態から
1 2 3 4 5 6 7 |
from django.urls import path from .views import todo urlpatterns = [ path('a/', todo), ] |
この状態に作り込んで行く
1 2 3 4 5 6 7 |
from django.urls import path from .views import urlpatterns = [ path('list/', TodoList.as_view()), # TodoListはclass classの場合は.as_viewをつける ] |
classを作成する
todo>views.pyを更新する
1 2 3 4 5 6 7 8 |
from django.shortcuts import render from django.views.generic import ListView # Create your views here. class TodoList(ListView): template_name = 'list.html' |
list.htmlを作成する
templateフォルダ下にlist.htmlファイルを作成し、
1 2 3 4 5 6 |
{% comment %} 複雑な処理は{% %}で囲む {% endcomment %} {% for item in object_list %} {% comment %} データを扱う時は{{}}で囲む {% endcomment %} {{ item.title }} {{ item.memo}} {% endfor%} |
ここで、titleとmemoはmodels.pyで定義されているもの
viws.pyにその他のモデルを使えるようにする
1 2 3 4 5 6 7 8 9 10 |
from django.shortcuts import render from django.views.generic import ListView from .models import TodoModel # 追記 # Create your views here. class TodoList(ListView): template_name = 'list.html' model = TodoModel # 追記 |
urls.pyでもimportをする
1 2 3 4 5 6 |
from django.urls import path from .views import TodoList urlpatterns = [ path('list/', TodoList.as_view()), ] |
ここまでで起動してみる
1 |
python3 manage.py runserver |

なんとかうまくいった
list.htmlをいじってみる
1 2 3 4 5 6 7 8 |
{% comment %} 複雑な処理は{% %}で囲む {% endcomment %} {% for item in object_list %} {% comment %} データを扱う時は{{}}で囲む {% endcomment %} <ul> <li>{{ item.title }}</li> <li>{{ item.memo }}</li> </ul> {% endfor%} |

うまくいった
![]() |
![]() |
---|
コメントを残す