相关疑难解决方法(0)

从HTML表单发布值并在Flask视图中访问它们

我有一个HTML表单,可以发布到Flask路由.但是,request.form是空的.如果我尝试通过id访问其中一个值,我会收到400错误.如何从HTML表单发布值并在Flask中访问它们?

<form method="POST">
  <input id="my_input" type="text" value="{{ email }}">
  <input id="my_submit" type="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)
@app.route('/page', methods=['POST', 'GET'])
def get_page():
    if request.method == 'POST':
        print(request.form)  # prints ImmutableMultiDict([])
        print(request.form['my_input'])  # raises 400 error
    return render_template('page.html')
Run Code Online (Sandbox Code Playgroud)

html python flask

7
推荐指数
1
解决办法
3007
查看次数

为什么我的文件上传(到Flask服务器)没有出现在request.files中但出现在request.stream中?

我有一个表单(恰好在iframe中),如下所示:

<form id='picture-file-input-button' action='/post-picture' method='post' enctype='multipart/form-data' encoding='multipart/form-data'>
    <button type='button' class='choose-picture-button'>Choose picture</button>
    <input class='picture-file-input' type='file' />
</form>
Run Code Online (Sandbox Code Playgroud)

我使用$('#picture-file-input-button').submit()提交表单,这样可以正常工作.请求被发送到正确的URL并且我的Flask函数将其拾取并且响应被正确地发送回客户端(iframe被重新加载).

我没有在Flask做任何花哨的事情.它看起来像这样:

@app.route('/post-picture', methods=['POST'])
def post_provider_page_route():
    app.logger.debug(request)
    app.logger.debug(request.data)
    app.logger.debug(request.stream)
    app.logger.debug(request.files)
    app.logger.debug(request.form)
    return render_template('iframe_template.html')
Run Code Online (Sandbox Code Playgroud)

调试所有输出为空的ImmutableMultiDict,但request.stream除外,它输出:

<werkzeug.wsgi.LimitedStream object at 0x9a7d30c>
Run Code Online (Sandbox Code Playgroud)

我希望看到该文件显示在request.files中.为什么它不会出现在request.files中?

javascript forms iframe file-upload flask

4
推荐指数
1
解决办法
4575
查看次数

标签 统计

flask ×2

file-upload ×1

forms ×1

html ×1

iframe ×1

javascript ×1

python ×1