#環境
MacOS
Python 3.7.6
Django 3.0.5
#データの更新機能の追加
まずはurls.py
の編集を行います。下記のように更新ページ用のURLを追加しましょう。
from django.urls import path
from .import views
app_name = 'diary'
urlpatterns = [
path('', views.index, name='index'),
path('add/', views.add, name='add'),
path('update/<int:pk>/', views.update, name='update'),
]
続いてviews.py
を編集します。get_object_or_404
をインポートすることを忘れないようにしましょう。上部は省略して追記分のみの記載になります。
def update(request, pk):
day = get_object_or_404(Day, pk=pk)
form = DayCreateForm(request.POST or None, instance=day)
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)
続いてday_list.html
に更新するためのアンカーリンクをつけます。
<tr>
<td>{{ day.title }}</td>
<td>{{ day.date }}</td>
<td><a href="{% url 'diary:update' day.pk %}">更新</a></td>
</tr>
きちんと追加されました。
#データの削除機能と詳細表示機能の追加
###データの削除機能の追加
データの更新のときのようにURLの追加から行います。
urlpatterns = [
path('', views.index, name='index'),
path('add/', views.add, name='add'),
path('update/<int:pk>/', views.update, name='update'),
path('delete/<int:pk>/', views.delete, name='delete'),
]
続いてviews.py
に下記のコードを追記します。
def delete(request, pk):
day = get_object_or_404(Day, pk=pk)
if request.method == 'POST':
day.delete()
return redirect('diary:index')
context = {
'day':day,
}
return render(request, 'diary/day_confirm_delete.html', context)
続いてday_confirm_delete.html
ファイルを作成し、こちらのコードを記述します。
{% extends 'diary/base.html' %}
{% block content %}
<form action='' method='POST'>
<table class='table'>
<tr>
<th>タイトル</th>
<td>{{ day.title }}</td>
</tr>
<tr>
<th>本文</th>
<td>{{ day.text | linebreaksbr }}</td>
</tr>
<tr>
<th>日付</th>
<td>{{ day.date }}</td>
</tr>
</table>
<p>こちらのデータを削除します。</p>
<button type='submit' class='btn btn-primary'>送信</button>
{% csrf_token %}
</form>
{% endblock %}
続いてday_list.html
に削除するためのアンカーリンクを追記します。
<tr>
<td>{{ day.title }}</td>
<td>{{ day.date }}</td>
<td><a href="{% url 'diary:update' day.pk %}">更新</a></td>
<td><a href="{% url 'diary:delete' day.pk %}">削除</a></td>
</tr>
###データの更新機能の追加
データの削除機能の追加と同じ要領で行います。更新機能ページのURLを追記します。
urlpatterns = [
path('', views.index, name='index'),
path('add/', views.add, name='add'),
path('update/<int:pk>/', views.update, name='update'),
path('delete/<int:pk>/', views.delete, name='delete'),
path('detail/<int:pk>/', views.detail, name='detail'),
]
続いてviews.py
に下記のコードを追記します。
def detail(request, pk):
day = get_object_or_404(Day, pk=pk)
context = {
'day':day,
}
return render(request, 'diary/day_detail.html', context)
続いてday_detail.html
ファイルを作成し、こちらのコードを記述します。
{% extends 'diary/base.html' %}
{% block content %}
<table class='table'>
<tr>
<th>タイトル</th>
<td>{{ day.title }}</td>
</tr>
<tr>
<th>本文</th>
<td>{{ day.text | linebreaksbr}}</td>
</tr>
<tr>
<th>日付</th>
<td>{{ day.date }}</td>
</tr>
</table>
{% endblock %}
その次にタイトルをクリックして詳細を確認できるようにday_list.html
を下記のように編集します。
<tr>
<td><a href="{% url 'diary:detail' day.pk %}">{{ day.title }}</a></td>
<td>{{ day.date }}</td>
<td><a href="{% url 'diary:update' day.pk %}">更新</a></td>
<td><a href="{% url 'diary:delete' day.pk %}">削除</a></td>
</tr>
これでタイトルをクリックすることで詳細を確認することができます^_^
#Djangoで作る日記帳アプリ一覧
Djangoで作る日記帳アプリ①
Djangoで作る日記帳アプリ②
Djangoで作る日記帳アプリ③
Djangoで作る日記帳アプリ④
Djangoで作る日記帳アプリ⑤