Django项目使用DeleteView类视图时出现TemplateDoesNotExist错误求助
解决Django DeleteView的TemplateDoesNotExist错误
问题根源
你的ProductDeleteView中指定的模板名称缺少.html后缀,导致Django无法定位到对应模板文件;同时需要确认模板文件路径是否匹配,以及完善取消按钮的跳转逻辑。
具体修复步骤
1. 修正视图中的模板名称
在views.py里,给template_name补充.html后缀:
class ProductDeleteView(DeleteView): model = Product template_name = "product/product_delete.html" # 添加.html后缀 success_url = reverse_lazy('products-page') context_object_name = 'product'
2. 确认模板文件路径
确保项目模板结构与配置一致,路径应为:
你的项目目录/ ├── templates/ │ ├── product/ │ │ ├── product_delete.html # 你的删除确认模板文件 │ │ └── ... # 其他产品相关模板
如果路径不匹配,要么调整template_name的值,要么将模板文件移动到对应路径下。
3. 完善取消按钮的跳转逻辑
当前取消按钮未设置跳转,点击会默认提交表单,修改删除确认页面的取消按钮代码,让它跳回产品列表页:
<form method="POST" class="row g-3"> <div class="col-auto"> <h6>Are you sure you want to delete {{product.name}}?:</h6> {% csrf_token %} <button type="submit" class="btn btn-danger mb-3">Delete</button> <a href="{% url 'products-page' %}" class="btn btn-primary mb-3">Cancel</a> </div> </form>
完成以上修改后,重新运行项目,点击删除链接即可正常加载确认模板,删除操作也能正常执行。
内容的提问来源于stack exchange,提问作者belmar
相关产品推荐
相关产品推荐

