python - Django 不能删除对象,也不能重定向
问题描述
我正在学习 django 并遇到了一些问题。我已经搜索过这个问题,但我的情况与其他人不同。
在我的删除视图下,我有:
def student_delete_view(request, my_id):
#try:
# obj = student.objects.get(id=my_id)
#except student.DoesNotExist:
# raise Http404
obj = get_object_or_404(student, id=my_id)
if request.method == 'POST':
obj.delete()
print("delete trigered")
return redirect('home.html')
context = {
'object':obj
}
return render(request, "student/student_delete.html", context)
这里 my_id 在 urls.py 中设置为:
path('student/<int:my_id>/delete', student_delete_view, name='rmc')
我的静态 HTML 中有这些:
{% extends 'base.html' %}
{% block content %}
<form action='.' method='POST'>{% csrf_token %}
<h1>Do you want to delete {{object.id}}?</h1>
<p>{{object.student_name}}</p>
<input type='submit' value='yes'><a href='.'>Cancel</a>
</form>
{% endblock %}
因此,如果我输入/student/1/delete,它会得到相应的对象并询问我是否要删除它。我可以成功进入删除页面,它可以正确显示 object.student_name,这意味着它确实从 SQL 中获取了该对象。
然后,如果我单击删除,它根本不会删除该对象,也不会遵循重定向功能。
同样在控制台中,它不会打印出“删除触发”,这意味着它根本不会触发删除。
控制台中唯一的内容是:
Not Found: /student/1/
我不知道它为什么试图去这里。
我只是想知道为什么它不会触发删除并且重定向不起作用。谢谢!
解决方案
在:
path('student/<int:my_id>/delete', student_delete_view, name='rmc')
在删除后添加 / 使其:
path('student/<int:my_id>/delete/', student_delete_view, name='rmc')
还将重定向中的参数更改为 ('home') 而不是 HTML
推荐阅读
- ios - 为什么 App Store Connect 审核收到 CKError QuotaExceeded
- python - 如何从这个字典列表中找到具有玩家 ID 的 5 个最大分数?
- python - pd.iterrows() 消耗所有内存并给出错误(进程以退出代码 137 完成(被信号 9 中断:SIGKILL))
- r - 带有自定义提示的 R geom_errorbar
- r - 在基本绘图函数中设置光栅图的 X 和 y 限制
- android - android:如何从 RecyclerView 中的搜索修复 SpannableStrings?
- java - 休眠 saveOrUpdate 方法
- c++ - 确定空指针
- sql - SQL - 加载没有业务ID的数据仓库维度表?
- c# - 为什么Textblock没有最大化