我刚刚开始研究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函数没有返回值。我迷失了为什么在执行第一次返回后没有退出功能的原因。
1 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
看起来两个返回都一个接一个地执行,但这是因为upload_file
每次上载都被调用两次-一次使用GET来呈现上载表单,一次使用POST来执行文件上载之后发生的一切。
与其他Python程序一样,该函数的确会在第一次返回后退出。
添加回答
举报
0/150
提交
取消