前提
- 公式チュートリアルでpollsアプリを制作した。
https://docs.djangoproject.com/ja/2.0/intro/tutorial01/ - 私の前回、前々回の記事を実装した。
https://qiita.com/Liverty/items/bb761908d288b517dac1
https://qiita.com/Liverty/items/9d2a64b935f338eca2df
views.pyに削除機能を追加
polls/views.py
class DeleteView(generic.DeleteView):
model = Question
form_class = QuestionForm
success_url = reverse_lazy('polls:index')
def delete(self, request, *args, **kwargs):
result = super().delete(request, *args, **kwargs)
messages.success(
self.request, '「{}」を削除しました'.format(self.object))
return result
urls.pyに削除のURLを追加
polls/urls.py
path('<int:pk>/delete/',views.DeleteView.as_view(), name='delete'),
question_confirm_delete.htmlを追加
templates/polls/question_confirm_delete.html
<p>{{ object }} を削除していいですか?</p>
<form method="post">
<button>削除する</button>
{% csrf_token %}
</form>
detail.htmlに削除ボタンを追加
templates/polls/detail.html
<a href="{% url 'polls:delete' question.id %}">削除</a>
これで動くと思います。
動かない場合は、当記事冒頭の前提条件を確認してください。