You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

删除商品评论后重定向至quick_view页面的Django问题

Django删除评论后重定向商品详情页的错误修复

问题场景

需要实现删除特定商品的特定评论后,自动重定向到该商品的quick_view.html页面,但当前触发删除时出现以下错误:

TypeError at /DeleteFeedback/22/
DeleteFeedback() missing 1 required positional argument: 'quick_view_id'

错误原因

视图函数DeleteFeedback声明需要id和quick_view_id两个参数,但urls.py中对应的路由仅传递了评论的id参数,导致参数缺失触发类型错误。

修复方案

1. 修改视图函数(views.py)

不需要从URL手动传递商品ID,直接通过评论对象关联的商品获取ID,逻辑更可靠且避免参数传递错误:

def DeleteFeedback(request, id):
    # 获取目标评论对象,用get_object_or_404处理评论不存在的情况
    feedback = get_object_or_404(ProductREVIEWS, pk=id)
    # 通过评论关联的商品获取商品ID
    product_id = feedback.product.id
    # 执行删除操作
    feedback.delete()
    messages.success(request, "Successfully your feedback deleted.")
    # 重定向到对应商品的quick_view页面
    return redirect('quick_view', product_id)

2. 确认路由配置(urls.py)

保持现有路由即可,因为现在视图仅需要评论的id参数:

path("DeleteFeedback/<int:id>/", views.DeleteFeedback, name="DeleteFeedback")

3. 优化删除请求方式(可选但推荐)

为避免GET请求误触发删除操作,在模板中使用POST表单提交删除请求:

<!-- 在quick_view.html的评论列表中添加删除表单 -->
{% for feedback in quick_view.productreviews_set.all %}
    <div class="feedback-item">
        <p>{{ feedback.feedBACK }}</p>
        <form action="{% url 'DeleteFeedback' feedback.id %}" method="POST">
            {% csrf_token %}
            <button type="submit" onclick="return confirm('确定要删除这条评论吗?')">删除评论</button>
        </form>
    </div>
{% endfor %}

验证效果

修改完成后,删除评论时会自动获取该评论所属的商品ID,并重定向到对应商品的quick_view页面,原TypeError错误消失,功能正常实现。

内容的提问来源于stack exchange,提问作者Mossaddak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:57:17