Django表单指定action后无法保存数据的问题求助
Django表单提交跳转与数据保存问题解决方案
问题根源分析
- Option 1(action为空):表单提交到当前URL(
macro/update/),对应macroUpdate视图能正确处理POST请求并保存数据,但视图最后强制跳转到了profile页面,和你预期的macro页面不符,所以出现跳转错误。 - Option 2(action设为
{% url 'macro' %}):表单提交到macro/页面的视图,但该视图没有处理POST请求的逻辑,数据根本没被处理保存,自然不会更新。
解决步骤
- 让表单提交到正确的处理视图:表单的
action必须指向负责处理表单提交的macro-updateURL,确保POST请求被能处理数据保存的视图接收。 - 修改视图的跳转目标:在
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
相关产品推荐
相关产品推荐

