我想要一个将表单保存到会话的按钮

Posted

技术标签:

【中文标题】我想要一个将表单保存到会话的按钮【英文标题】:i want a button that Save a form to session 【发布时间】:2018-09-15 19:20:57 【问题描述】:

我有一个很长的表单,我希望我的用户能够将它保存在 会话 中,做其他事情并稍后再返回。

我在想中间某处的按钮,它可以激活保存到会话操作并引导另一个表单创建必要的对象。

<a href="% url 'tag:create_new_tag'%">
   <button class="btn btn-primary" value="">
     Add New Tag
    </button>
</a>

问题是,如果我插入没有任何类型的按钮(如上面的代码),表单将被提交并且我的对象保存到数据库中,尽管我只是希望它保存在会话中。 另一方面,如果我添加一个type=button 属性,HTTP 请求将只是一个 GET,所以我无法检索到目前为止已完成的字段。

那么最好的方法是什么?

【问题讨论】:

&lt;button&gt; 不应嵌套在 &lt;a&gt; 标签中:***.com/a/6393863/2644759 也可以在外面发&lt;form&gt;吗? @PhilipTzou 是的,我对外部表单没有任何问题。我只是想在中间加入另一个表格的功能,然后再回到这个 【参考方案1】:

感谢此处发现的另一个问题,我实际上发现了如何做我的想法 How can I build multiple submit buttons django form?

所以我放了 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

这让我只能使用一个窗口

【讨论】:

【参考方案2】:

您似乎正在使用 Bootstrap 或类似的框架。首先,您不必在&lt;a&gt; 元素中包含&lt;button&gt;,这也违反了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);

【讨论】:

我实际上只想使用一个窗口,这样我就不必创建一个函数来刷新第一种形式的数据以反映第二种形式中所做的更改 @GersA。您提供的信息太少,这就是我可以建议的。不过,我很高兴您自己找到了解决方案。 @PhilpTzou 你是对的。很抱歉,谢谢您的帮助

以上是关于我想要一个将表单保存到会话的按钮的主要内容,如果未能解决你的问题,请参考以下文章

使用保存和取消选项编辑表单

将表单条目保存到变量并添加到表中

单击另一个表单上的保存按钮后如何刷新以前的表单

Telerik MVC Scheduler 自定义表单按钮标题

SQLAlchemy,获取未绑定到会话的对象

确定在 Django 表单提交中单击了哪个提交按钮