新聞中心
相信學(xué)過Python的小伙伴,肯定都知道Flask這個web開發(fā)框架,但是并不是所有人都了解它,下面說一說Flask這個框架該怎么學(xué),要學(xué)多久才能掌握。

目前成都創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、團風(fēng)網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
首先,什么是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 去掉值兩端的空格標簽(for循環(huán)遍歷可迭代對象)
{% for 變量 in 列表|元組|字典 %}
{% endfor %}
for標簽中的內(nèi)置對象loop
loop.index 獲取下標
loop.index0 從0開始的下標
loop.first True/False
loop.last True/False宏
下面是一個關(guān)于Flask中宏的用法的實例:
{% macro showP(str) %}
使用宏顯示的內(nèi)容:
{{str}}
{% endmacro %}
{% for name in params.list %}
{{showP(name)}}
{% endfor %}
{% 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/')
def show1(name):
name:表示的就是地址欄上傳遞的數(shù)據(jù)
pass
2.指定參數(shù)類型的路由
@app.route('/show//')
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文件:
后臺代碼
@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:
passsession
from flask import session
配置 SECRET_KEY:
app.config['SECRET_KEY']="thisisarandomstring"
增:
session['key'] = value
刪:
del session['key']
查:
value = session['key']
value = session.get('key') 網(wǎng)頁題目:創(chuàng)新互聯(lián)Python教程:flask框架要學(xué)多久
網(wǎng)站鏈接:http://www.dlmjj.cn/article/cogohos.html


咨詢
建站咨詢
