Удаление сообщения в 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
Надеюсь, этот ответ поможет.