在 Django 中删除一个 post
deleting a post in django
嗨,我读过一些类似的 posts 但找不到相同的问题。
我写了一个删除 post 的代码,当我按下删除时它显示 404 错误但是当回到家时 post 仍然存在
观看次数:
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:
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>
应该可以。
此外,请注意,如果您没有为 django
设置可识别的 url
来处理,<a href="../../">cancel</a>
将显示另一个 404 error
。
希望这个回答对您有所帮助。
嗨,我读过一些类似的 posts 但找不到相同的问题。 我写了一个删除 post 的代码,当我按下删除时它显示 404 错误但是当回到家时 post 仍然存在 观看次数:
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:
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>
应该可以。
此外,请注意,如果您没有为 django
设置可识别的 url
来处理,<a href="../../">cancel</a>
将显示另一个 404 error
。
希望这个回答对您有所帮助。