#環境
MacOS
Python 3.7.6
Django 3.0.5
#モデルの作成
下記のようにmodels.py
を開き、class
をDay
にしtitle
とtext
とdate
の3つの属性を定義します。
from django.db import models
from django.utils import timezone
class Day(models.Model):
title = models.CharField('タイトル', max_length=200)
text = models.TextField('本文')
date = models.DateTimeField('日付', default=timezone.now)
次に記述した内容をデータベースに反映させます。ターミナルを開いて下記のように記述します。
$ python3 manage.py makemigrations diary
migrationとは「移動・移行」という意味になります。こちらのコマンドで変更をしたことをDjangoに伝えています。次に反映を実行するために下記のコマンドを記述します。
$ python3 manage.py migrate
データの追加機能を作成する
新しいページを作成するためにurls.py
に下記のように記述を追加します。
from django.urls import path
from .import views
app_name = 'diary'
urlpatterns = [
path('', views.index, name='index'),
path('add/', views.add, name='add'),
]
次にforms.py
を作成し下記のように記述します。
from django import forms
from .models import Day
class DayCreateForm(forms.ModelForm):
class Meta:
model = Day
fields = '__all__'
次にviews.py
を開いて下記のように追記します。データ追加用ページのview
となるadd
関数を作ります。
from django.shortcuts import render
from .forms import DayCreateForm
def index(request):
return render(request, 'diary/day_list.html')
def add(request):
context = {
'form':DayCreateForm()
}
return render(request, 'diary/day_form.html', context)
続いてday_form.html
を作成し、下記のように記述します。
{% extends 'diary/base.html' %}
{% block content %}
<form action='' method='POST'>
{{ form.as_p }}
<button type='submit'>送信</button>
{% csrf_token %}
</form>
{% endblock %}
ここまで記述してブラウザで確認します。
きちんとフォームができていることが確認できました^_^
次にviews.py
に下記のように追記します。
from django.shortcuts import render, redirect
from .forms import DayCreateForm
def index(request):
return render(request, 'diary/day_list.html')
def add(request):
form = DayCreateForm(request.POST or None)
if request.method == 'POST' and form.is_valid():
form.save()
return redirect('diary:index')
context = {
'form':form
}
return render(request, 'diary/day_form.html', context)
views.pyに上記のような記述をすることでエラーメッセージが下記のように表示されるようになりました。
#Djangoで作る日記帳アプリ一覧
Djangoで作る日記帳アプリ①
Djangoで作る日記帳アプリ②
Djangoで作る日記帳アプリ③
Djangoで作る日記帳アプリ④
Djangoで作る日記帳アプリ⑤