python - flask redirect 重定向問題?
問題描述
代碼如下, 圖片能上傳成功, 但是圖片上傳成功后不能顯示圖片, redirect這樣寫對么?
#!/usr/bin/env python3# -*- coding:utf-8-*-import osfrom flask import Flask, render_template, request, redirect, url_forfrom flask_uploads import UploadSet, configure_uploads, patch_request_class, IMAGESapp = Flask(__name__)app.config[’UPLOADED_PHOTOS_DEST’] = os.getcwd() + '/upload/img'photos = UploadSet(’photos’, IMAGES)configure_uploads(app, photos)patch_request_class(app)@app.route(’/’, methods=[’POST’, ’GET’])def index(): if request.method == ’POST’ and ’photo’ in request.files:filename = photos.save(request.files[’photo’])file_url = photos.url(filename)print('filename = %s, file_url = %s' % (filename, file_url))return redirect(url_for(’index’, file_url=file_url)) return render_template(’index.html’, file_url=None)if __name__ == ’__main__’: app.run(port=8080)
<!doctype html><html><head> <title>Demo-上傳文件</title></head><body><h1>文件上傳demo</h1><form method='post' enctype='multipart/form-data'> <input type='file' name='photo'> <input type='submit' value='上傳'></form><br>{% if file_url %} <img src='http://www.intensediesel.com/wenda/{{ file_url }}' alt=''> {% else %} <p>還沒有上傳文件</p>{% endif %}</body></html>
----------更新----------將index路由修改了一下, 達到了想要的效果:
@app.route(’/’, methods=[’POST’, ’GET’])def index(): file_url = None if request.method == ’POST’ and ’photo’ in request.files:filename = photos.save(request.files[’photo’])file_url = photos.url(filename)print('filename = %s, file_url = %s' % (filename, file_url)) return render_template(’index.html’, file_url=file_url)
但之前的思路不對的么?
問題解答
回答1:對于圖片的顯示,需要定義1個路由用于發送靜態文件,可以使用send_from_directory來進行對應的處理。
@app.route(’/get_media/<path:filename>’, methods=[’GET’])def get_media(filename): return send_from_directory(’/media/’, filename)
相關文章:
1. javascript - 關于<a>元素與<input>元素的JS事件運行問題2. css3 - 純css實現點擊特效3. MySQL中的enum類型有什么優點?4. java - 為什么第一個線程已經釋放了鎖,第二個線程卻不行?5. mysql - 記得以前在哪里看過一個估算時間的網站6. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風格檢查怎么辦。。。7. 大家好,我想請問一下怎么做搜索欄能夠搜索到自己網站的內容。8. python - 啟動Eric6時報錯:’qscintilla_zh_CN’ could not be loaded9. html - vue項目中用到了elementUI問題10. mysql - 查詢字段做了索引為什么不起效,還有查詢一個月的時候數據都是全部出來的,如果分拆3次的話就沒問題,為什么呢。
