python - 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>
我不确定为什么它让我刷新页面并再次重新提交表单以便在提交表单后查看更新的查询集?
解决方案
你应该做这样的事情:
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})
推荐阅读
- python - 在通过 Python 使用 Root 中创建带有分支的 TTree
- rest - 如何使用支持 Rest 和 GraphQL 的 light-4j 构建应用程序
- amazon-cloudfront - 缓存与无缓存是否会影响 CloudFront 定价?
- typescript - TypeScript:让库的用户定义类型
- mysql - MySQL SELECT * 在 Unicode 上失败
- node.js - node.js 和 express 的区别
- python - 通过单击页面中的每个超链接来抓取网站
- r - 在 R 中满足另一个条件时(即当另一个变量是特定值时)需要帮助用 NA 替换值
- javascript - props.images.map 不是函数(函数组件)
- entity-framework - 在 EF Core 中的每条记录上自动设置创建和修改日期的问题