?? 歡迎大家來到景天科技苑??
???? 養(yǎng)成好習慣,先贊后看哦~????
?? 作者簡介:景天科技苑
??《頭銜》:大廠架構(gòu)師,華為云開發(fā)者社區(qū)專家博主,阿里云開發(fā)者社區(qū)專家博主,CSDN新星創(chuàng)作者,掘金優(yōu)秀博主,51CTO博客專家等。
??《博客》:Python全棧,前后端開發(fā),人工智能,js逆向,App逆向,網(wǎng)絡系統(tǒng)安全,數(shù)據(jù)分析,Django,fastapi,flask等框架,linux,shell腳本等實操經(jīng)驗,網(wǎng)站搭建,面試寶典等分享。所屬的專欄:flask框架零基礎,進階應用實戰(zhàn)教學
景天的主頁:景天科技苑
1.flask簡介
Flask誕生于2010年,是Armin ronacher(阿明·羅納徹)用 Python 語言基于 Werkzeug 工具箱編寫的輕量級Web開發(fā)框架。
Flask 本身相當于一個內(nèi)核,其他幾乎所有的功能都要用到擴展(郵件擴展Flask-Mail,用戶認證Flask-Login,數(shù)據(jù)庫Flask-SQLAlchemy),都需要用第三方的擴展來實現(xiàn)。
比如可以用 Flask 擴展加入ORM、窗體驗證工具,文件上傳、身份驗證等。
Flask 沒有默認使用的數(shù)據(jù)庫,你可以選擇 MySQL,也可以用 NoSQL。
flask的 WSGI 工具箱采用 Werkzeug(路由模塊),模板引擎則使用 Jinja2。Itsdangrous(token加密模塊),Click(終端命令管理工具),flask內(nèi)核本身,這5個核心模塊組成 Flask 框架。
官網(wǎng): https://flask.palletsprojects.com/en/3.0.x/
官方文檔: [https://dormousehole.readthedocs.io/en/latest/index.html]
Flask常用第三方擴展包:
- Flask-SQLAlchemy:操作數(shù)據(jù)庫,ORM;
- Flask-script:終端腳本工具,腳手架; ( 淘汰,官方內(nèi)置腳手架:Click)
- Flask-migrate:管理遷移數(shù)據(jù)庫;
- Flask-Session:Session存儲方式指定;
- Flask-Mail:郵件;
- Flask-Login:認證用戶狀態(tài);(django內(nèi)置Auth模塊,用于實現(xiàn)用戶登錄退出,)
- Flask-OpenID:認證, OAuth;(三方授權(quán),)
- Flask-RESTful:開發(fā)REST API的工具;
- Flask JSON-RPC: 開發(fā)json-rpc遠程服務[過程]調(diào)用
- Flask-Bable:提供國際化和本地化支持,翻譯;
- Flask-Moment:本地化日期和時間
- Flask-Admin:簡單而可擴展的管理接口的框架
- Flask-Bootstrap:集成前端Twitter Bootstrap框架(前后端分離,除了admin站點,基本不用這玩意)
- Flask-WTF:表單生成模塊;(前后端分離,除了admin站點,基本不用這玩意)
- Flask-Marshmallow:序列化(類似django restframework的序列化器,比django的更好用)
可以通過 https://pypi.org/search/?c=Framework+%3A%3A+Flask
查看更多flask官方推薦的擴展
準備
安裝flask,則以下命令:
pip install flask
我裝過了,目前最新版本是3.0.2
2.創(chuàng)建flask項目
與django不同,flask不會提供任何的自動操作,所以需要手動創(chuàng)建項目目錄,需要手動創(chuàng)建啟動項目的管理文件
例如,手動創(chuàng)建項目目錄 flaskdemo,在目錄中創(chuàng)建manage.py,在pycharm中打開項目并指定上面創(chuàng)建的虛擬環(huán)境
1.創(chuàng)建程序入口文件
manage.py是flask框架的啟動入口文件。名字可以是app.py/run.py/main.py/index.py/manage.py/start.py
等
manage.py,代碼:
# 1. 導入flask核心類
from flask import Flask
# 2. 初始化web應用程序的實例對象,__name__拿到的就是當前文件名
app = Flask(__name__)
# 4. 可以通過實例對象app提供的route路由裝飾器,綁定視圖與uri地址的關(guān)系
@app.route("/")
def index():
# 5. 默認flask支持函數(shù)式視圖,視圖的函數(shù)名不能重復,否則報錯!??!
# 視圖的返回值將被flask包裝成響應對象的HTML文檔內(nèi)容,返回給客戶端。
return "<h1>hello flask</h1>"
if __name__ == '__main__':
# 3. 運行flask提供的測試web服務器程序,端口號默認是5000,開啟debug之后,只要修改代碼,服務都會自動重啟
app.run(host="0.0.0.0", port=5000, debug=True)
看下源碼,host默認是127.0.0.1,port默認是5000
2.運行程序
3.瀏覽器訪問網(wǎng)站
在瀏覽器輸入flask運行提供的url
3.代碼分析
我們看下Flask的參數(shù)文章來源:http://www.zghlxwxcb.cn/news/detail-841477.html
# 導入Flask類
from flask import Flask
"""
Flask類的實例化參數(shù):
import_name Flask程序所在的包(模塊),傳 __name__ 就可以,這個是必填項,其他都非必須
其可以決定 Flask 在訪問靜態(tài)文件時查找的路徑
static_url_path 靜態(tài)文件的url訪問路徑,可以不傳,默認為:/ + static_folder
static_folder 靜態(tài)文件存儲的文件夾,可以不傳,默認為 static
template_folder 模板文件存儲的文件夾,可以不傳,默認為項目根目錄下的 templates文件夾
"""
app = Flask(__name__)
# 編寫路由視圖
# flask的路由是通過給視圖添加裝飾器的方式進行編寫的。當然也可以分離到另一個文件中。
# flask的視圖函數(shù),flask中默認允許通過return返回html格式數(shù)據(jù)給客戶端。
@app.route('/')
def index():
# 返回值如果是字符串,被自動作為參數(shù)傳遞給response對象進行實例化返回客戶端
return "<h1>hello flask</h1>"
# 指定服務器IP和端口
if __name__ == '__main__':
# 運行flask
app.run(host="0.0.0.0", port=5000, debug=True)
4.項目中flask加載項目配置的二種方式
# 1. 導入flask核心類
from flask import Flask
# 2. 初始化web應用程序的實例對象
app = Flask(__name__)
"""第一種:flask項目加載站點配置的方式""" 配置項屬性名要大寫
# app.config["配置項"] = 配置項值
# app.config["DEBUG"] = False
"""第二種:flask項目加載站點配置的方式"""
# app.config是整個flask項目默認的配置屬性,里面包含了所有的可用配置項,配置項的屬性名都是大寫字母或大寫字母+下劃線組成
app.config = {
"DEBUG": True
}
app.config.update(config)
# 4. 可以通過實例對象app提供的route路由裝飾器,綁定視圖與uri地址的關(guān)系
@app.route("/")
def index():
# 5. 默認flask支持函數(shù)式視圖,視圖的函數(shù)名不能重復,否則報錯!??!
# 視圖的返回值將被flask包裝成響應對象的HTML文檔內(nèi)容,返回給客戶端。
return "<h1>hello flask</h1>"
if __name__ == '__main__':
# 3. 運行flask提供的測試web服務器程序
app.run(host="0.0.0.0", port=5000)
我們打印看下app.config,要么是大寫字母,要么是大寫字母加下劃線連接
并不是所有的參數(shù)都可以通過app.config來設置,我們看下app.config有哪些屬性
<Config {‘DEBUG’: True, ‘TESTING’: False, ‘PROPAGATE_EXCEPTIONS’: None, ‘SECRET_KEY’: None, ‘PERMANENT_SESSION_LIFETIME’: datetime.timedelta(days=31), ‘USE_X_SENDFILE’: False, ‘SERVER_NAME’: None, ‘APPLICATION_ROOT’: ‘/’, ‘SESSION_COOKIE_NAME’: ‘session’, ‘SESSION_COOKIE_DOMAIN’: None, ‘SESSION_COOKIE_PATH’: None, ‘SESSION_COOKIE_HTTPONLY’: True, ‘SESSION_COOKIE_SECURE’: False, ‘SESSION_COOKIE_SAMESITE’: None, ‘SESSION_REFRESH_EACH_REQUEST’: True, ‘MAX_CONTENT_LENGTH’: None, ‘SEND_FILE_MAX_AGE_DEFAULT’: None, ‘TRAP_BAD_REQUEST_ERRORS’: None, ‘TRAP_HTTP_EXCEPTIONS’: False, ‘EXPLAIN_TEMPLATE_LOADING’: False, ‘PREFERRED_URL_SCHEME’: ‘http’, ‘TEMPLATES_AUTO_RELOAD’: None, ‘MAX_COOKIE_SIZE’: 4093}>文章來源地址http://www.zghlxwxcb.cn/news/detail-841477.html
到了這里,關(guān)于python輕量級web框架flask初探,搭建網(wǎng)站原來這么簡單的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!