1
我有Bootstrap模式窗口更新數據每當我關閉它,我面臨所謂的雙重提交問題。也就是說,如果我按F5鍵,會彈出一條消息,告訴我我要第二次提交相同的數據,如果按OK鍵,它會將記錄插入到我的表中。此外,如果我嘗試第二次打開模式窗口,則渲染不正確!不知怎的,它與Django有什麼關係?瀏覽器雙重提交問題 - 引導+ Django
的模式窗口:
<form class="modal fade" id="openTaskWindow" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" method="post">{% csrf_token %}
<div class="modal-dialog modal-lg form-horizontal" role="form">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="exampleModalLabel">Новая задача</h4>
</div>
<div class="modal-body" style="font-size: smaller">
{{ createTask_form.as_p}}
</div>
<div class="modal-footer">
<input class="btn btn-default btn-sm" type="submit" value="Сохранить"/>
</div>
</div>
</div>
</form>
調用窗口中的按鈕:
<div><button type="button" data-toggle="modal" data-target="#openTaskWindow" data-backdrop="static" data-keyboard="false">Launch my modal</button></div>
的視圖(即當調用提交模式窗口的按鈕被按下):
def createTask(request):
taskTable = Tasks.objects.all()
if request.method == 'POST':
task_form = TaskForm(request.POST)
if task_form.is_valid():
temp_form = task_form.save(commit=False)
temp_form.is_important = 0
temp_form.save()
return render_to_response('task_management/task_list.html',{'createTask_form':temp_form, 'taskTable': taskTable},context_instance=RequestContext(request))
else:
task_form = TaskForm()
return render_to_response('task_management/task_list.html',{'createTask_form':task_form, 'taskTable': taskTable, 'task_id':''},context_instance=RequestContext(request))
看完社區討論後,我試圖做到這一點:
$('#openTaskWindow').submit(function() {
location.href = location.href;
});
但它沒有幫助。有任何想法嗎?
「你可以通過查詢字符串來實現這一點」 - 你能否提供一些關於如何傳遞參數的示例代碼?我是Django的新手:)非常感謝你的回答。我花了整整一天的時間在這個 –
如果你做'返回HttpResponseRedirect('your_url?foo = bar')',那麼在你的視圖裏可以通過'request.GET.get('foo')'訪問'foo'。這意味着它是作爲GET參數發送的,或換句話說作爲查詢字符串的一部分。 –