flask利用flask-wtf驗(yàn)證上傳的文件的方法
更新時(shí)間:2020年01月17日 11:04:44 作者:Python''sGod
這篇文章主要介紹了flask利用flask-wtf驗(yàn)證上傳的文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
利用flask-wtf驗(yàn)證上傳的文件
- 定義驗(yàn)證表單類的時(shí)候,對(duì)文件類型的字段,需要采用FileField這個(gè)類型,即wtforms.FileField。
- 驗(yàn)證器需要從flask_wtf.file中導(dǎo)入。flask_wtf.file.FileRequired和flask_wtf.file.FileAllowed
- flask_wtf.file.FileRequired是用來(lái)驗(yàn)證文件上傳不能為空。
- flask_wtf.file.FileAllowed用來(lái)驗(yàn)證上傳的文件的后綴名, 如常見(jiàn)圖片后綴.jpg和.png以及.gif等。
- 在視圖函數(shù)中,需要使用from werkzeug.datastructures import CombinedMultiDict來(lái)把request.form與request.files來(lái)進(jìn)行合并。
- 最后使用 表單驗(yàn)證對(duì)象.validate()進(jìn)行驗(yàn)證。
upload.html文件:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>上傳文件</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <table> <tr> <td>頭像:</td> <td><input type="file" name="pichead"></td> </tr> <tr> <td>描述:</td> <td><input type="text" name="desc"></td> </tr> <tr> <td></td> <td><input type="submit" value="提交"></td> </tr> </table> </form> </body> </html>
formscheck.py文件:
from wtforms import Form,FileField,StringField from wtforms.validators import InputRequired from flask_wtf.file import FileRequired,FileAllowed class UploadForm(Form): pichead = FileField(validators=[FileRequired(),FileAllowed(['jpg','png','gif'])]) desc = StringField(validators=[InputRequired()])
python啟動(dòng)文件:
from flask import Flask,request,render_template import os from werkzeug.utils import secure_filename from formscheck import UploadForm from werkzeug.datastructures import CombinedMultiDict app = Flask(__name__) UPLOAD_PATH = os.path.join(os.path.dirname(__file__),'images') #利用flask-wtf驗(yàn)證上傳的文件 @app.route('/upload/',methods=['GET','POST']) def upload(): if request.method == 'GET': return render_template('upload.html') else: form = UploadForm(CombinedMultiDict([request.form,request.files])) if form.validate(): # desc = request.form.get("desc") # pichead = request.files.get("pichead") desc = form.desc.data pichead = form.pichead.data filename = secure_filename(pichead.filename) pichead.save(os.path.join(UPLOAD_PATH,filename)) print(desc) return '文件上傳成功' else: print(form.errors) return "文件上傳失敗" if __name__ == '__main__': app.run(debug=True)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- flask框架url與重定向操作實(shí)例詳解
- python flask中動(dòng)態(tài)URL規(guī)則詳解
- Flask框架URL管理操作示例【基于@app.route】
- 在flask中使用python-dotenv+flask-cli自定義命令(推薦)
- flask框架自定義過(guò)濾器示例【markdown文件讀取和展示功能】
- Flask和Django框架中自定義模型類的表名、父類相關(guān)問(wèn)題分析
- flask框架藍(lán)圖和子域名配置詳解
- flask框架渲染Jinja模板與傳入模板變量操作詳解
- Python的Flask框架中@app.route的用法教程
- python使用Flask框架獲取用戶IP地址的方法
- flask框架自定義url轉(zhuǎn)換器操作詳解
相關(guān)文章
Python光學(xué)仿真教程實(shí)現(xiàn)光線追蹤
傳統(tǒng)的高斯光學(xué)是建立在傍軸近似基礎(chǔ)之上的理想成像理論,這種處理以物像關(guān)系為核心,通過(guò)基點(diǎn)對(duì)光路的成像特性進(jìn)行描述。然而,傍軸近似在一定程度上犧牲了精確性,從而使得需要一套像差理論作為補(bǔ)充2021-10-10Vscode?遠(yuǎn)程切換Python虛擬環(huán)境的詳細(xì)步驟
使用VSCode遠(yuǎn)程切換Python虛擬環(huán)境涉及安裝VSCode和必要擴(kuò)展、連接遠(yuǎn)程服務(wù)器、創(chuàng)建或激活虛擬環(huán)境,并選擇對(duì)應(yīng)Python解釋器,詳細(xì)步驟包括安裝Python和Remote-SSH擴(kuò)展,感興趣的朋友一起看看吧2024-09-09python3通過(guò)selenium爬蟲(chóng)獲取到dj商品的實(shí)例代碼
這篇文章主要介紹了python3通過(guò)selenium爬蟲(chóng)獲取到dj商品的實(shí)例代碼,需要的朋友可以參考下2019-04-04用python 批量更改圖像尺寸到統(tǒng)一大小的方法
下面小編就為大家分享一篇用python 批量更改圖像尺寸到統(tǒng)一大小的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Python的Asyncore異步Socket模塊及實(shí)現(xiàn)端口轉(zhuǎn)發(fā)的例子
asyncore模塊是封裝過(guò)的處理socket事件的模塊,采用異步的處理方式,這里我們講來(lái)講解Python的Asyncore異步Socket模塊及實(shí)現(xiàn)端口轉(zhuǎn)發(fā)的例子,需要的朋友可以參考下2016-06-06