Django删除待办任务跳转报404但任务已删除,如何解决?
问题原因及修复方案
核心404问题修复
你遇到的删除成功后报404是因为删除后的跳转路径配置错误:你的项目路由里并没有配置/index.html/对应的路径,你定义的首页路由对应的是根路径/,所以修改views.py中DeleteTodo类的success_url属性即可:
# 方式1:直接填写正确的首页路径 success_url = '/' # 方式2:更规范的命名路由写法,后续修改路由不需要再改视图代码,更推荐 success_url = reverse_lazy('todoxd_app:index')
两种方式任选其一即可。
其他代码问题修复
1. delete_todo.html模板缺失表单结构
你当前的删除确认模板没有包裹表单标签,也没有提交按钮,后续会出现无法正常提交删除请求的问题,修改模板代码如下:
{% extends 'todoxd_app/base.html' %} {% block content %} <form method="post"> {% csrf_token %} <p>Are you sure you want to delete this task?</p> <button type="submit">DELETE TASK</button> </form> {% endblock content %}
2. new_todo视图跳转逻辑错误
你的new_todo视图中,保存成功后的跳转代码return redirect('todoxd_app/new_todo')写法错误,如果使用命名路由跳转,应该用冒号分隔应用名和路由名,修改为:
return redirect('todoxd_app:new_todo')
3. 代码规范优化建议
- todo视图中的查询变量名
objekt语义不清晰,建议修改为tasks,同时同步修改模板中对应的变量名,方便后续维护。 - 所有路由跳转尽量使用命名路由的写法,不要硬编码路径,避免后续修改路由导致路径失效。
内容的提问来源于stack exchange,提问作者Mekaze
相关产品推荐
相关产品推荐

