這篇文章主要介紹flask框架一般要學(xué)多久,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷、企業(yè)網(wǎng)站建設(shè),賣友情鏈接,廣告投放為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計到用戶體驗提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
相信學(xué)過Python的小伙伴,肯定都知道Flask這個web開發(fā)框架,但是并不是所有人都了解它,下面說一說Flask這個框架該怎么學(xué),要學(xué)多久才能掌握。
首先,什么是Flask
Flask是一個基于Python并且依賴于Jinja2模板引擎和Werkzeug WSGI服務(wù)的一個微型框架
Flask中包含一個輕量級的web 服務(wù)器主要用于在開發(fā)階段測試使用
Falsk使用MTV框架模式
MTV框架模式
M : Models , 模型層 , 主要負責(zé)根據(jù)數(shù)據(jù)庫建模
T : Templates , 模板層 ,處理用戶的顯示的內(nèi)容的,如:html
V : Views ,視圖 , 處理與用戶交互的內(nèi)容(請求和響應(yīng))
下面我們從Templates、Views和Models這三個部分來了解下Flask框架
Templates
Templates這部分主要講解以下幾個部分:
過濾器
語法: {{變量|過濾器}} Jinja2模板中常用的過濾器有: capitalize 首字符變大寫,其他字符變小寫 lower 將值轉(zhuǎn)換為小寫字符 upper 將值轉(zhuǎn)換為大寫字符 title 將值中的每個單詞的首字符變大寫 trim 去掉值兩端的空格
標(biāo)簽(for循環(huán)遍歷可迭代對象)
{% for 變量 in 列表|元組|字典 %} {% endfor %} for標(biāo)簽中的內(nèi)置對象loop loop.index 獲取下標(biāo) loop.index0 從0開始的下標(biāo) loop.first True/False loop.last True/False
宏
下面是一個關(guān)于Flask中宏的用法的實例: <!-- 聲明宏:接收一個字符串作為參數(shù),將參數(shù)放p中打印輸出 --> {% macro showP(str) %} <h4>使用宏顯示的內(nèi)容:</h4> <p>{{str}}</p> {% endmacro %} <!-- 使用宏 --> <div> {% for name in params.list %} {{showP(name)}} {% endfor %} </div> <!-- 引入外部的宏 --> {% import 'macros.html' as ms %} {% for name in params.list %} {{ms.show_p(name)}} {% endfor %}
繼承
父模板中: {% block title %} 父模板中的內(nèi)容 {% endblock %} 子模板中: {% extends '父模板.html' %} {% block title %} 子模板中的內(nèi)容 {% endblock %} 子模板中的內(nèi)容會覆蓋父模板中的內(nèi)容
自定義404/500等錯誤頁面
1.404 的錯誤處理 @app.errorhandler(404) def page_not_fount(e): return render_template('404.html'),404 2.500 的錯誤處理 @app.errorhandler(500) def internal_server_error(500): return render_template('500.html'),500 404.html 和 500.html 需要自定義
Views
Views這部分主要講解以下幾個部分:
路由
請求方法
url反向解析
request對象
響應(yīng)response
文件上傳
cookies
session
路由
一:基本路由的配置: #http://127.0.0.1:5000/ @app.route('/') def index(): return "xxx" 二:帶參數(shù)路由的配置: 1.基本帶參數(shù)的路由 @app.route('/show/<name>') def show1(name): name:表示的就是地址欄上傳遞的數(shù)據(jù) pass 2.指定參數(shù)類型的路由 @app.route('/show/<name>/<int:age>') def show(name,age): name : 字符串 age : 整數(shù) 可選的參數(shù)類型為 int float path(字符串,可以有斜杠/) 三:多個路由的配置: @app.route('/地址1') @app.route('/地址2') .... def index(): pass
請求方法
在Flask中默認只能接收get請求,post請求無法接收,但是可以手動設(shè)置請求的接收方式。
下面的函數(shù)既能接收get請求又能接收post請求 @app.route('/xxx',methods=['POST','GET']) def xxx(): pass
文件上傳
html文件:
<form action="/01-file" method="post" enctype="multipart/form-data"> <p> 用戶姓名: <input type="text" name="uname"> </p> <p> 用戶圖像: <input type="file" name="uimg"> </p> <p> <input type="submit" value="提交"> </p> </form>
后臺代碼
@app.route('/01-file',methods=['GET','POST']) def file_views(): if request.method == 'GET': return render_template('01-file.html') else: #處理的上傳的文件 #1.得到上傳的文件 f = request.files['uimg'] #2.將文件保存進指定的目錄處[相對路徑] # print('文件名稱:'+f.filename) # f.save('static/'+f.filename) #3.將文件保存進指定的目錄處[絕對路徑] #獲取當(dāng)前文件的所在目錄名 basedir = os.path.dirname(__file__) #print('當(dāng)前文件所在目錄的絕對路徑:'+basedir) #獲取當(dāng)前的時間拼成字符串,再拼上擴展名 ftime=datetime.datetime.now().strftime("%Y%m%d%H%M%S%f") #獲取文件的擴展名 (b04.jpg) ext = f.filename.split('.')[1] filename = ftime + "." + ext upload_path = os.path.join(basedir,'static/upload',filename) # print('完整的上傳路徑:'+upload_path) f.save(upload_path) return "Save OK"
cookies
增: resp=make_response('保存cookie成功') resp.set_cookie('uname','test',3600) 刪: 響應(yīng)對象.delete_cookie('key') 查詢: uname = request.cookies.get('key') request.cookies['key'] request.cookies # 拿到所有的cookies if 'key' in request.cookies: pass
session
from flask import session 配置 SECRET_KEY: app.config['SECRET_KEY']="thisisarandomstring" 增: session['key'] = value 刪: del session['key'] 查: value = session['key'] value = session.get('key')
以上是“flask框架一般要學(xué)多久”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
標(biāo)題名稱:flask框架一般要學(xué)多久
鏈接URL:http://aaarwkj.com/article32/igcipc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、標(biāo)簽優(yōu)化、移動網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、App開發(fā)、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)