关于javascript:如何在Flask中获取表单数据?

How to get form data in Flask?

本问题已经有最佳答案,请猛点这里访问。

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

我使用javascript创建表单:

1
2
3
4
5
6
7
8
9
10
11
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();
                }
            }

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

这是我的视图功能:

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

但我得到一个错误:

江户十一〔一〕号

帮助我从表单中获取数据。


从Flask的请求对象获取表单数据:

1
2
3
4
5
6
7
from flask import Flask, request
app = Flask(__name__)

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

还可以设置默认值以避免400个错误,如下所示:

1
2
3
4
5
6
7
8
from flask import Flask, request
app = Flask(__name__)

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