Python微型Web框架Flask快速入門
本文轉(zhuǎn)載自微信公眾號(hào)「dongfanger」,作者dongfanger。轉(zhuǎn)載本文請(qǐng)聯(lián)系dongfanger公眾號(hào)。
Flask是什么
如果說Django是一個(gè)開箱即用的自帶完善功能的Web框架,那么Flask就是一個(gè)只提供基礎(chǔ)結(jié)構(gòu)的微型框架。這一點(diǎn)從它的GitHub源碼就能看出端倪:
它的核心代碼就只有這么多。微型意味著Flask本身只提供了簡單的核心的功能,但它具備了強(qiáng)大的可擴(kuò)展性。比如,它不會(huì)強(qiáng)制你使用某個(gè)ORM框架,而是把選擇權(quán)交給你,讓你自己決定集成哪個(gè)擴(kuò)展。
無論如何,都應(yīng)該學(xué)習(xí)一下Flask,因?yàn)樗屇銖牧汩_始,了解一個(gè)Web框架是如何誕生的:
安裝Flask
Flask需要Python3.6及以上才能使用,最新的async異步支持需要Python3.7及以上。
安裝Flask前可以先創(chuàng)建一個(gè)虛擬環(huán)境,這樣相關(guān)的包都放在這個(gè)虛擬環(huán)境中。
Mac用戶:
- # 創(chuàng)建
- $ mkdir myproject
- $ cd myproject
- $ python3 -m venv venv
- # 激活
- $ . venv/bin/activate
Windows用戶:
- # 創(chuàng)建
- > mkdir myproject
- > cd myproject
- > py -3 -m venv venv
- # 激活
- > venv\Scripts\activate
然后就通過pip安裝Flask即可:
- $ pip install Flask
Hello World
Flask是一個(gè)Web框架,更準(zhǔn)備的說是一個(gè)提供接口的后端服務(wù),只需要5行代碼就能實(shí)現(xiàn)一個(gè)接口:
- from flask import Flask
- app = Flask(__name__)
- @app.route("/")
- def hello_world():
- return "<p>Hello, World!</p>"
截止到目前,還沒見過哪個(gè)Web框架是這么玩的,有點(diǎn)顛覆對(duì)Web框架的認(rèn)知,印象中的Web框架都是有點(diǎn)龐大的,F(xiàn)lask卻很輕巧的就實(shí)現(xiàn)了。
運(yùn)行后會(huì)在控制臺(tái)輸出:
- > set FLASK_APP=hello
- > flask run
- * Running on http://127.0.0.1:5000/
瀏覽器訪問http://127.0.0.1:5000/就會(huì)看到Hello, World!字樣。
代碼解析
這幾行代碼會(huì)做這4件事:
- from flask import Flask,F(xiàn)lask類的實(shí)例就是一個(gè)WSGI應(yīng)用,這樣才能跑起來。
- app = Flask(__name__),參數(shù)__name__是模塊或包名,這樣Flask才能去查找Web相關(guān)文件。
- @app.route("/"),定義了接口的URL,也就是路由配置,默認(rèn)是GET方法。
- hello_world()函數(shù)是具體的接口處理邏輯代碼,返回了一個(gè)HTML字符串。
小結(jié)
本文簡單介紹了Flask是什么,怎么安裝Flask,演示了Hello World的代碼實(shí)現(xiàn)Demo,并對(duì)代碼進(jìn)行了解析。為什么一定要學(xué)Flask呢?我最近看了一篇Django vs Flask的最新的比較文章,原文是國外某個(gè)博客發(fā)的,里面說道,如果你想在當(dāng)前快速實(shí)現(xiàn)某個(gè)需求,那么可以選擇使用Django。但是請(qǐng)你有時(shí)間務(wù)必回過頭來學(xué)一下Flask,因?yàn)檫@樣才能知道用Python做Web開發(fā)的所有細(xì)節(jié)。
參考資料:
https://flask.palletsprojects.com/en/2.0.x/
https://flask.palletsprojects.com/en/2.0.x/foreword/
https://flask.palletsprojects.com/en/2.0.x/installation/
https://flask.palletsprojects.com/en/2.0.x/quickstart/