前提・実現したいこと
Djangoを使って、日記の登録、編集、削除機能があるホームページを作っています。
ページ遷移する際にNoReverseMatch atというエラーが出力されます。
エラーが発生するのはdiary_detail.htmlの削除ボタンからdiary_delete.htmlというページに遷移するときです。
このエラーを解消したいと考えています。
発生している問題・エラーメッセージ
エラーメッセージ NoReverseMatch at /diary-delete/3/ Reverse for 'diary_detail' with arguments '('',)' not found. 1 pattern(s) tried: ['diary\-detail/(?P<pk>[0-9]+)/$']
該当のソースコード
html
1#diary_delete.html 2 3{% extends 'base.html' %} 4{% load static %} 5 6{% block title%}日記削除|Private Diary{% endblock %} 7 8{% block active_diary_list %}active{% endblock %} 9 10{% block contents %} 11 12<div class="container"> 13 <div class="row"> 14 <div class="my-div-style w-100"> 15 <form method="POST"> 16 {% csrf_token %} 17 <p>本当に削除しますか。</p> 18 <button class="btn btn-primary mt-5" type="submit">削除</button> 19 <a class="btn btn-secondary mt-5 ml-2" href="{% url 'diary:diary_detail' objcet.pk %}"> 20 キャンセル 21 </a> 22 </form> 23 </div> 24 </div> 25</div> 26{% endblock %}
html
1#diary_detail.html 2{% extends 'base.html' %} 3{% load static %} 4 5{% block title%}日記詳細|Private Diary{% endblock %} 6 7{% block active_diary_list %}active{% endblock %} 8 9{% block contents %} 10<div class="container"> 11 <div class="my-div-style w-100"> 12 13 #略 14 15 <a class="btn btn-success mt-5 mb-3" href="{% url 'diary:diary_update' object.pk%}">編集</a> 16 <a class="btn btn-success mt-5 ml-2 mb-3" href="{% url 'diary:diary_delete' object.pk%}">削除</a> 17 </div> 18</div> 19{% endblock %} 20 21 22
views
1#views.py 2 3 4from django.shortcuts import render 5from django.urls import reverse_lazy 6from django.views import generic 7from django.contrib import messages 8from django.contrib.auth.mixins import LoginRequiredMixin 9from .models import Diary 10 11 12class DiaryDeleteView(LoginRequiredMixin, generic.DeleteView): 13 model = Diary 14 template_name = 'diary_delete.html' 15 success_url = reverse_lazy('diary:diary_list') 16 17 def delete(self, request, *args, **kwargs): 18 messages.success(self.request, "日記を削除しました。") 19 return super().delete(request, *args, **kwargs) 20
urls
1#urls.py 2 3from django.urls import path 4 5from . import views 6 7app_name = 'diary' 8urlpatterns = [ 9 path('', views.IndexView.as_view(), name="index"), 10 path('inquiry/', views.InquiryView.as_view(), name="inquiry"), 11 path('diary-list/', views.DiaryListView.as_view(), name="diary_list"), 12 path('diary-detail/<int:pk>/', views.DiaryDetailView.as_view(), name="diary_detail"), 13 path('diary-create/', views.DiaryCreateView.as_view(), name="diary_create"), 14 path('diary-update/<int:pk>/', views.DiaryUpdateView.as_view(), name="diary_update"), 15 path('diary-delete/<int:pk>/', views.DiaryDeleteView.as_view(), name="diary_delete"), 16] 17
試したこと
エラーメッセージでググってみたのですが、本件に参考になりそうな情報を見つけることができませんでした。
参考にしているテキストのソースコードと見比べたのですが、差を見つけることができませんでした。
diary_delete.htmlに何も記述しなくても同様のエラーが発生したこと、URLを直接入力しても画面が遷移しなかったことから、
urlpatternsが問題かと思ったのですが、特に問題を見つけることができませんでした。
ツールなど
venv仮想環境を作成し、Pycharmを使って編集しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/09 00:55