首页 > 解决方案 > Django 表单需要重新提交

问题描述

我在 Django 中有一个简单的表单,在我的模板中,我想为我保存表单的整个查询集显示每个单独的对象。我得到的错误是我的表单似乎没有在第一次尝试时提交。只有当我单击提交按钮、手动刷新页面然后“确认表单重新提交”时,我才能看到我更新的查询集对象显示在模板中。

我在我的视图中保存我的表单:

 exercise_name = ExerciseName.objects.all()

 if request.method == 'POST':
      form = ExerciseNameForm(request.POST)
      if form.is_valid():
         form.save(commit=True)
      else:
         form = ExerciseNameForm()

并通过以下上下文将查询集传递给模板:

{ 'exercise_name': exercise_name }

并像这样迭代它

{% for exercise_title in exercise_name %}
  #content displaying each iteration 
{% endfor %}

用我的表格来更新它:

<div>
    <form method = "POST">{% csrf_token %}
        {{form.as_p}}
        <button type="submit" class="save btn btn-default">Save</button>
    </form>
</div>

我不确定为什么它让我刷新页面并再次重新提交表单以便在提交表单后查看更新的查询集?

标签: pythonhtmldjangodjango-formsdjango-templates

解决方案


你应该做这样的事情:

if request.method == 'POST':
    form = ExerciseNameForm(request.POST)
    if form.is_valid():
        form.save(commit=True)
        return HttpResponse("data submitted successfully") 
    else:
        return render(request, "your_template.html", {'form':form})
else: 
    form = ExerciseNameForm()
    return render(request, "your_template.html", {'form':form})

推荐阅读