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

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

setting.pyを編集する
『todoproject』の方のこれを
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',
],
},
},
]
こう
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',
],
},
},
]
ここの部分も
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
こう
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'todo', # 追記
]
templatesフォルダを作成する
mkdir templates
作成箇所はここ

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

todoproject > urls.py を
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 モデル フィールド 種類 でググってみるのもよし
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のある階層で
python3 manage.py makemigrations
エラーが出るのでtodoの中のurls.pyを修正する

from django.urls import path
from .view import todo
urlpatterns = [
path('a/', todo),
]
views.pyも修正

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

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

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

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

こうなる

Todo models の +add をクリック

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

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

こうすると
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.
こうなる

さらにこうして
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は

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をこの状態から
from django.urls import path
from .views import todo
urlpatterns = [
path('a/', todo),
]
この状態に作り込んで行く
from django.urls import path
from .views import
urlpatterns = [
path('list/', TodoList.as_view()), # TodoListはclass classの場合は.as_viewをつける
]
classを作成する
todo>views.pyを更新する
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ファイルを作成し、
{% comment %} 複雑な処理は{% %}で囲む {% endcomment %}
{% for item in object_list %}
{% comment %} データを扱う時は{{}}で囲む {% endcomment %}
{{ item.title }}
{{ item.memo}}
{% endfor%}
ここで、titleとmemoはmodels.pyで定義されているもの
viws.pyにその他のモデルを使えるようにする
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をする
from django.urls import path
from .views import TodoList
urlpatterns = [
path('list/', TodoList.as_view()),
]
ここまでで起動してみる
python3 manage.py runserver

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

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