【问题标题】:How to get form data in Flask? [duplicate]如何在 Flask 中获取表单数据? [复制]
【发布时间】:2017-06-28 12:27:58
【问题描述】:

我需要从表单中获取数据。

我使用 JavaScript 创建表单:

<script>   
function checkAuth() {
                var user = ADAL.getCachedUser();
                if (user) {
                    var form = $('<form style="position: absolute; width: 0; height: 0; opacity: 0; display: none; visibility: hidden;" method="POST" action= "{{ url_for("general.microsoft") }}">');

                    form.append('<input type="hidden" name="token" value="' + ADAL.getCachedToken(ADAL.config.clientId) + '">');
                    form.append('<input type="hidden" name="json" value="' + encodeURIComponent(JSON.stringify(user)) + '">');
                    $("body").append(form);
                    form.submit();
                }
            }
</script> 

然后我需要从name="json"的输入字段中获取数据。

这是我的视图函数:

@general.route("/microsoft/", methods=["GET", "POST"])
@csrf.exempt
def microsoft():
    form = cgi.FieldStorage()
    name = form['json'].value
    return name

但我得到一个错误:

builtins.KeyError KeyError: 'json'

帮我从表单中获取数据。

【问题讨论】:

  • 你能提供更多细节吗?
  • @WhatsThePoint 脚本将数据传输到处理它们的 Python。我需要从name="json" 中提取价值数据

标签: javascript python json flask


【解决方案1】:

您可以使用form 属性从Flask 的请求对象中获取表单数据:

from flask import Flask, request
app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    data = request.form['input_name']  # pass the form field name as key
    ...
    

您还可以设置一个默认值以避免使用get() 方法出现400 错误,因为request.form 属性是一个类似dict 的对象:

from flask import Flask, request
app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    default_value = '0'
    data = request.form.get('input_name', default_value)
    ...
    

【讨论】:

  • 谢谢,我该如何解码name?因为返回答案eb2a-4390-8283-1be75d3ad422%22%2C%22oid%22%3A%22a3c6887f-614b-42b7-9a08-
  • 这是一个新问题...您可能需要接受我的回答并写下另一个问题:)
猜你喜欢
  • 2013-11-17
  • 1970-01-01
  • 2014-11-18
  • 2019-11-22
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-31
相关资源
最近更新 更多