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

Django表单指定action后无法保存数据的问题求助

Django表单提交跳转与数据保存问题解决方案

问题根源分析

  • Option 1(action为空):表单提交到当前URL(macro/update/),对应macroUpdate视图能正确处理POST请求并保存数据,但视图最后强制跳转到了profile页面,和你预期的macro页面不符,所以出现跳转错误。
  • Option 2(action设为{% url 'macro' %}):表单提交到macro/页面的视图,但该视图没有处理POST请求的逻辑,数据根本没被处理保存,自然不会更新。

解决步骤

  1. 让表单提交到正确的处理视图:表单的action必须指向负责处理表单提交的macro-update URL,确保POST请求被能处理数据保存的视图接收。
  2. 修改视图的跳转目标:在macroUpdate视图中,处理完POST请求后,将跳转目标改为你预期的macro页面。

修改后的代码示例

macro_update.html

<ul>
    <form action="{% url 'macro-update' %}" method="post">
        {% csrf_token %}
        {{ macro_form.as_ul }}
        <input type="submit" value="Submit">
    </form>
</ul>

views.py(macroUpdate函数)

@login_required(login_url='login')
def macroUpdate(request):

    if request.method == "POST":
        macro_form = MacroForm(request.POST, instance=request.user.profile)
        if macro_form.is_valid():
            macro_form.save()
            messages.success(request,('Your macros were successfully updated!'))
        else:
            messages.error(request,('Unable to complete request'))
        return redirect("macro")  # 调整跳转目标为macro页面

    macro_form = MacroForm(instance=request.user.profile)    
    context = {"user":request.user, "macro_form":macro_form } 
    return render(request, 'macro_update.html', context)

效果说明

修改后,表单提交时会将数据发送到macroUpdate视图完成保存操作,处理完成后自动跳转到你预期的macro/页面,同时数据也能正常更新保存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:45:46