2022年8月27日土曜日

Django 覚書9 delete

クラスで試したがなぜかうまくいかない。 クラスのDeleteViewで削除する例は多いが、関数を利用したものが少ない。

関数だと、こんなふうにしたところ、うまくいった。


@login_required
def mcsmain_delete(request,pk):
    template_name = "mcsmain/mcsmain_delete.html"
    mcsmain = get_object_or_404(Mcsmain, pk=pk)
    if mcsmain.created_by_id != request.user.id:
        return HttpResponseForbidden("このメッセージの削除は許可されていません。")   
    if request.POST:
        mcsmain.delete()
        return redirect('/')
    return render(request,template_name) ←ここで、pkを渡さなくても、postには支障ないようだ。このへんがわかりずらい。

***mscmain_detail.html
<a href="{% url 'mcsmain_delete' mcsmain.id %}">削除</a>

***mscmain_delete.html
<form method="post" >
 {% csrf_token %}
    <p>削除していいですか?</p>
    <input type="submit" value="削除する">
</form>

0 件のコメント:

コメントを投稿