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

Django电商应用POST请求丢失URL参数致404错误求助

问题解决:Django编辑商品提交POST后URL丢失ID导致404

问题根源

复用的add-product.html模板中,表单的action属性设置为.,在访问编辑页面(URL为/mystore/edit-product/4)时,这个相对路径会被解析为父路径/mystore/edit-product/,而该路径没有对应的路由配置,因此POST请求返回404错误。

解决方案

方案一:动态生成表单提交地址(推荐)

通过在视图中传递正确的提交URL,确保新增和编辑场景都使用对应路由:

  1. 修改视图函数
    导入reverse方法,在渲染模板时传递form_action参数:

    from django.urls import reverse  # 顶部导入
    
    @login_required
    def add_product(request):
        # 原有逻辑不变...
        return render(request, 'userprofile/add-product.html', {
            'title': 'Add Product',
            'form': form,
            'form_action': reverse('add-product')  # 新增此行
        })
    
    @login_required
    def edit_product(request, pk):
        # 原有逻辑不变...
        return render(request, 'userprofile/add-product.html', {
            'title': 'Edit Product',
            'form': form,
            'form_action': reverse('edit-product', args=[pk])  # 新增此行
        })
    
  2. 更新模板表单
    将表单的action改为动态传递的form_action:

    <form method="post" action="{{ form_action }}" enctype="multipart/form-data">
    

方案二:简化表单提交地址

直接将表单的action设为空字符串,表单会自动提交到当前页面的完整URL(包含商品ID):

<form method="post" action="" enctype="multipart/form-data">

验证修改

修改后,编辑商品时提交POST请求,会正确发送到/mystore/edit-product/4,匹配对应的edit_product视图处理表单,不会再出现404错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:05:55