【问题标题】:Editing form data before passing into flask app在传递到烧瓶应用程序之前编辑表单数据
【发布时间】:2016-12-20 21:16:09
【问题描述】:

我有以下由烧瓶应用程序呈现的多选表单:

<form method="POST" action="">
    <label for="sports">Sports:</label>
    <select id="sports" name="sports" multiple>
        <option value="Basketball">Basketball</option>
        <option value="Football">Football</option>
        <option value="Baseball">Baseball</option>
        <option value="Golf">Golf</option>
        <option value="Soccer">Soccer</option>
    </select>
    <input type="submit" name="send" onclick="var selected_sports = project.getSelectedValues(document.querySelector('#sports'));">
</form>

我正在尝试将数据以列表的形式发送到服务器/python代码。

例如,如果您选择篮球、足球和高尔夫,则列表将为 ["Basketball", "Football", "Golf"],如果您仅选择足球,则列表将为 ["Football"]

我可以使用 javascript(下面的代码)创建列表,但我不确定如何将此创建的列表传递给服务器(服务器只接收第一个选择的选项)。

用于创建选定值列表的 JS 代码(单击提交按钮时在 HTML 表单中调用):

project = {};

project.getSelectedValues = function (selectTag) {
    var result = [];
    var options = selectTag && selectTag.options;

    for (var = 0; i < options.length; i++) {
        if (options[i].selected) {
            result.push(options[i].value || options[i].text);
        }
    }
    return result;
}

【问题讨论】:

  • 你的表单在服务器端怎么样?
  • 不是。表单驻留在烧瓶应用程序呈现的模板中。
  • 您有一些处理表单的 python 代码。例如,在某些观点中,对吗?
  • 是的,但我认为 python 代码不会影响这里的任何东西。数据必须在到达服务器之前推送到列表中,对吗?我基本上是使用运动列表来查阅数据库并将一些数据投影到前端。
  • 您必须将数据插入到实际表单中,随机 javascript 变量不会随已发布的表单数据一起移动。尝试在表单中添加一个隐藏元素,然后使用事件处理程序设置该元素的值。

标签: javascript python forms flask


【解决方案1】:

服务器只接收第一个选择的选项

您可以正常提交&lt;select id="sports" name="sports" multiple&gt;(无需使用JS创建列表)并使用getlist()

引用python代码中所有选定的选项
sports = request.form.getlist('sports')

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多