現在「掲示板アプリ」を作成しています。
HttpResponseRedirectの挙動について質問させてください。
下記のコードのように、
スレッド上でコメントを削除、その後同様のスレッドへリダイレクトさせています。
ここで疑問なのですが、
comment.delete()
で削除後、return HttpResponseRedirect(reverse('edit', args=(comment.thred_id,)))
で引数の「comment.thred_id」を取得できる仕組みが理解できません。削除後もcommentオブジェクトは保持されているのでしょうか。
また、裏側で値がどのようにやり取りされているか等、Djangoのデバッグでおすすめの方法などありましたらお教えいただけますと幸いです。
どうぞよろしくお願い致します。
urls
1urlpatterns = [ 2 path('admin/', admin.site.urls), 3 path('', views.index, name='index'), 4 path('edit/<int:thred_id>', views.edit, name='edit'), 5 path('delete/<int:comment_id>', views.co_delete, name='co_delete'), 6]
model
1class Thred(models.Model): 2 #掲示板スレッド 3 thred_name = models.CharField('スレッド名', max_length=30) 4 created_at = models.DateField(default=timezone.now) 5 6class Comment(models.Model): 7 #掲示板コメント 8 name = models.CharField('名前', max_length=20) 9 message = models.CharField('書き込み', max_length=200) 10 created_at = models.DateField(default=timezone.now) 11 thred = models.ForeignKey(Thred, to_field='id',on_delete=models.CASCADE) #テーブル連携 12
views
1def co_delete(request, comment_id): 2 comment = get_object_or_404(Comment, id=comment_id) 3 comment.delete() #質問したいコード 4 return HttpResponseRedirect(reverse('edit', args=(comment.thred_id,))) #質問したいコード
index
1{% for comment in comments %} 2<li> 3 {{ comment.message }} 4 <form method="post" action="{% url 'co_delete' comment.id %}">{% csrf_token %} 5 <button class="btn" type="submit">削除</button> 6 </form> 7</li>
あなたの回答
tips
プレビュー