我剛剛開始研究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> '''我不了解語法,對我來說似乎有兩個(gè)都執(zhí)行的return語句。例如,如果文件被正確選擇,是允許的文件,該文件被保存,用戶獲取其瀏覽器的URL重定向:/文件名= selected_file由return redirect(url_for('uploaded_file',filename=filename))再后來還有另外一個(gè)基本上呈現(xiàn)HTML來回報(bào)向用戶展示。從我的玩法來看,似乎兩個(gè)語句都已執(zhí)行,而省略最后一個(gè)語句將導(dǎo)致python抱怨view函數(shù)沒有返回值。我迷失了為什么在執(zhí)行第一次返回后沒有退出功能的原因。
1 回答

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
看起來兩個(gè)返回都一個(gè)接一個(gè)地執(zhí)行,但這是因?yàn)?code>upload_file每次上載都被調(diào)用兩次-一次使用GET來呈現(xiàn)上載表單,一次使用POST來執(zhí)行文件上載之后發(fā)生的一切。
與其他Python程序一樣,該函數(shù)的確會在第一次返回后退出。
添加回答
舉報(bào)
0/150
提交
取消