我有一个很长的表单,我希望我的用户能够将其保存在会话中,执行其他操作并稍后再返回。
我正在考虑在中间的某个位置激活保存到会话的操作,并引导另一个表单创建一个必要的对象。
<a href="{% url 'tag:create_new_tag'%}">
<button class="btn btn-primary" value="">
Add New Tag
</button>
</a>
问题是,如果我插入没有任何类型的按钮(如上面的代码),表单将被提交并且我的对象保存到数据库,但我只是希望它保存在会话中。
另一方面,如果我添加type=button
属性,HTTP请求将只是一个GET,所以我无法检索到目前为止完成的字段。
那么最好的方法是怎样做?
答案 0 :(得分:1)
您似乎正在使用Bootstrap或类似的框架。首先,您不必在<button>
元素中包含<a>
,这也违反了W3C标准。其次,使用Bootstrap,您可以在此期间仅使用a
元素将其呈现为按钮:
<a href="{% url 'tag:create_new_tag'%}" class="btn btn-primary" id="btn-add-new-tag">
Add New Tag
</a>
在打开django网址'tag:create_new_tag'
时,您似乎还需要保留表单。如果打开一个新的窗口/标签是可以接受的:
<a target="_blank" href="{% url 'tag:create_new_tag'%}" class="btn btn-primary" id="btn-add-new-tag">
Add New Tag
</a>
此外,如果您想在打开网址时保存表单,则必须使用JavaScript:
var btnAddNewTag = document.getElementById('btn-add-new-tag');
var form = document.getElementById('your-form');
btnAddNewTag.addEventListener('click', function() {
form.submit();
}, false);
答案 1 :(得分:0)
由于此处发现了另一个问题,我实际上发现了如何做到我想到的 How can I build multiple submit buttons django form?
所以我放了两个不同的提交按钮,将请求发送到同一个
<input class="btn btn-primary" name="add-new-tag" type="submit" value="Add New Grammar" />
<input class="btn btn-primary" name="submit-question" type="submit" value="Save" />
但是,在我处理表单的视图函数中,我提出了类似
的条件if 'add-new-tag' in form.data:
#save the datas i need in session, and switch to a second form
# when second form is completed and saved, redirect back to the
# main form and populate fields with data from session
else:
#submit the main form
这允许我只使用一个窗口