Flask了解文件上传示例中的多次退货

我刚刚开始研究flask,然后开始处理文件上传,但是有些事情我无法解决。


在我基本上改编的文档示例中,我们有


@app.route('/', methods=['GET', 'POST'])

def upload_file():

    if request.method == 'POST':

        # check if the post request has the file part

        if 'file' not in request.files:

            flash('No file part')

            return redirect(request.url)

        file = request.files['file']

        # if user does not select file, browser also

        # submit an empty part without filename

        if file.filename == '':

            flash('No selected file')

            return redirect(request.url)

        if file and allowed_file(file.filename):

            filename = secure_filename(file.filename)

            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))

            return redirect(url_for('uploaded_file',

                                    filename=filename))

    return '''

    <!doctype html>

    <title>Upload new File</title>

    <h1>Upload new File</h1>

    <form method=post enctype=multipart/form-data>

      <input type=file name=file>

      <input type=submit value=Upload>

    </form>

    '''

我不了解语法,对我来说似乎有两个都执行的return语句。例如,如果文件被正确选择,是允许的文件,该文件被保存,用户获取其浏览器的URL重定向:/文件名= selected_file由return redirect(url_for('uploaded_file',filename=filename))再后来还有另外一个基本上呈现HTML来回报向用户展示。


从我的玩法来看,似乎两个语句都已执行,而省略最后一个语句将导致python抱怨view函数没有返回值。


我迷失了为什么在执行第一次返回后没有退出功能的原因。


白衣非少年
浏览 112回答 1
1回答

慕田峪9158850

看起来两个返回都一个接一个地执行,但这是因为upload_file每次上载都被调用两次-一次使用GET来呈现上载表单,一次使用POST来执行文件上载之后发生的一切。与其他Python程序一样,该函数的确会在第一次返回后退出。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python