【发布时间】:2016-06-20 22:34:21
【问题描述】:
我正在使用 Boostrap 模态淡入淡出窗口呈现 Django 表单来更新我的数据库记录。如果用户打开了更新窗口并且没有更改任何内容,我没有做的是不重新加载页面。如果你看下面的代码会更容易理解我的想法:
def updateTask(request, task_id):
#cur_usr_sale_point = PersonUnique.objects.filter(employees__employeeuser__auth_user = request.user.id).values_list('agreementemployees__agreement_unique__sale_point_id',flat=True)
selected_task = Tasks.objects.get(id=task_id)
task_form = TaskForm(instance=selected_task )
taskTable = Tasks.objects.all()
if request.method == 'POST':
task_form = TaskForm(request.POST,instance=selected_task)
if task_form.has_changed():
if task_form.is_valid():
# inside your model instance add each field with the wanted value for it
task_form.save();
return HttpResponseRedirect('/task_list/')
else: # The user did not change any data but I still tell Django to
#reload my page, thus wasting my time.
return HttpResponseRedirect('/task_list/')
return render_to_response('task_management/task_list.html',{'createTask_form':task_form, 'task_id': task_id, 'taskTable': taskTable},context_instance=RequestContext(request))
问题是,有什么方法可以告诉 Django 更改 url(就像重定向后发生的那样),但不要第二次加载具有相同数据的同一页面?
【问题讨论】:
-
不,我不这么认为。一旦
request被发送到 Django,它必须返回一个response。您可以在单击按钮时使用一些 AJAX 来执行此操作。编写一个 AJAX 方法,检查当前表单数据是否与保存的数据不同。仅当为真时,才提交完整的表单。 -
@DanRussell,您能否在回答问题时提供此 JQuery-Ajax 函数结构的最短示例?我对 Ajax 的经验很少,即使我知道理论,但我不知道这在实践中应该是什么样子。我会感激甚至朝着正确的方向踢一脚
标签: django