如何在 Flask 中获取表单数据? [复制]

Posted

技术标签:

【中文标题】如何在 Flask 中获取表单数据? [复制]【英文标题】:How to get form data in Flask? [duplicate] 【发布时间】: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" 中提取价值数据 【参考方案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- 这是一个新问题...您可能需要接受我的回答并写下另一个问题:)

以上是关于如何在 Flask 中获取表单数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flask 中获取请求的参数? [复制]

如何在Python框架Flask中将图像文件从表单上传到数据库

如何在不提交 HTML 表单的情况下从数据库中获取数据? [复制]

如何获取 Flask 请求 JSON 数据作为字典?

无论 Content-Type 标头如何,在 Python Flask 中获取原始 POST 正文

用python flask制作的网页上传到服务器后python如何获取网上用户提交的form表单信息?