Удаление сообщения в django

hi я прочитал несколько похожих постов, но не смог найти такую же проблему. Я написал код для удаления поста и когда я нажимаю удалить он показывает 404 ошибку, но когда я возвращаюсь на главную страница пост все еще там. views:

def delete_music_view(request,music_id):
#view for deleting music
my_object = add_music.objects.get(id=music_id)
if request.method == 'POST':
    my_object.delete()
    return redirect('pages:home')   
context = {'my_object':my_object}

return render(request,'pages/delete_music.html',context)

url:

app_name = 'pages'

urlpatterns = [
    path('',views.home,name='home'),
    path('add_music/',views.add_music_view,name='add_music'),
    path('musics/<int:music_id>',views.musics_view,name='music_page'),
    path('musics/<int:music_id>/delete',views.delete_music_view,name='delete_music'),
    ]

Шаблон:

{% extends 'pages/base.html' %}

{% block content %}
<form action="." method='POST'>
    {% csrf_token %}
    <p><input type="submit" name="delete" value="yes"><a href="../../">cancel</a></p>
</form>
{% endblock %}

Пожалуйста, скажите мне, что случилось?

Поскольку метод delete_music_view будет обрабатывать запрос POST, нет необходимости использовать атрибут формы action. У вас есть:

<form action="." method='POST'>
    {% csrf_token %}
    <p><input type="submit" name="delete" value="yes"><a href="../../">cancel</a></p>
</form>

Удалите action из вашей формы и вместо этого сделайте следующее:

<form method='POST'>  # Removing the action attribute
    {% csrf_token %}
    <p><input type="submit" name="delete" value="yes"><a href="../../">cancel</a></p>
</form>

Это должно сработать.

Также обратите внимание, что <a href="../../">cancel</a> покажет вам еще один 404 error, если вы не зададите распознаваемый url для обработки django

Надеюсь, этот ответ поможет.

Вернуться на верх