我的表单很长,我希望我的用户能够将其保存在 session 中后来。
我在想一个按钮中间的一个按钮,该按钮激活了节省的课程动作,并带领另一种形式来创建必要的对象。
<a href="{% url 'tag:create_new_tag'%}">
<button class="btn btn-primary" value="">
Add New Tag
</button>
</a>
问题是,如果我插入没有任何类型的按钮(例如上面的代码中(,则表示表单并将对象保存到数据库中,尽管我只是希望将其保存在会话中。另一方面,如果我添加了type=button
属性,则HTTP请求将是一个获取,因此我无法检索到目前为止完成的字段。
那么最好的方法是如何做的?
看来您正在使用bootstrap或类似框架。首先,您不必在<a>
元素内包含<button>
,这也违反了W3C标准。其次,使用Bootstrap,您可以仅使用a
元素,同时将其呈现为按钮:
<a href="{% url 'tag:create_new_tag'%}" class="btn btn-primary" id="btn-add-new-tag">
Add New Tag
</a>
似乎您还需要在打开Django URL '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>
此外,如果要在打开URL时保存表单,则必须使用JavaScript完成:
var btnAddNewTag = document.getElementById('btn-add-new-tag');
var form = document.getElementById('your-form');
btnAddNewTag.addEventListener('click', function() {
form.submit();
}, false);
我实际上发现了如何做我想到的事情,这要归功于此处发现的另一个问题 如何构建多个提交按钮django表单?
所以我放了2个不同的提交按钮,将请求发送到相同
<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
这允许我仅使用一个窗口