作者:Eason_LYC
悲觀者預(yù)言失敗,十言九中。 樂(lè)觀者創(chuàng)造奇跡,一次即可。
一個(gè)人的價(jià)值,只在于他所擁有的。所以可以不學(xué)無(wú)術(shù),但不能一無(wú)所有!
技術(shù)領(lǐng)域:WEB安全、網(wǎng)絡(luò)攻防
關(guān)注WEB安全、網(wǎng)絡(luò)攻防。我的專欄文章知識(shí)點(diǎn)全面細(xì)致,邏輯清晰、結(jié)合實(shí)戰(zhàn),讓你在學(xué)習(xí)路上事半功倍,少走彎路!
個(gè)人社區(qū):極樂(lè)世界-技術(shù)至上
追求技術(shù)至上,這是我們理想中的極樂(lè)世界~(關(guān)注我即可加入社區(qū))
本專欄是對(duì)Flask官方文檔中個(gè)人博客搭建進(jìn)行的歸納總結(jié),與官方文檔結(jié)合事半功倍?;A(chǔ)薄弱的同學(xué)請(qǐng)戳Flask官方文檔教程
本人經(jīng)驗(yàn),學(xué)習(xí)一門(mén)語(yǔ)言或框架時(shí),
請(qǐng)首先閱讀并官方文檔
。學(xué)習(xí)完畢后,再看其他相關(guān)文章,如本系列文章,才是正確的學(xué)習(xí)道路。
如果python都完全不熟悉,一定不要著急學(xué)習(xí)框架,
請(qǐng)首先學(xué)習(xí)python官方文檔,一步一個(gè)腳印。要不然從入門(mén)到放棄是大概率事件。
1、本章知識(shí)點(diǎn)總結(jié)
2. 項(xiàng)目布局
2.1 基礎(chǔ)信息
個(gè)人博客使用Flask框架2.1.2, 數(shù)據(jù)庫(kù)sqlite, 開(kāi)發(fā)軟件Pycharm專業(yè)版(社區(qū)版也可)
2.2建立文件關(guān)系
一個(gè)Flask項(xiàng)目往往是由如下幾部分組成
- 程序核心文件
- 模板文件(HTML頁(yè)面)
- 靜態(tài)文件(層疊樣式表CSS、圖片等)
- 核心邏輯(Flask主程序、數(shù)據(jù)庫(kù)文件、接口文件等)
- 相關(guān)配置文件(程序運(yùn)行配置或相關(guān)說(shuō)明)
- 環(huán)境文件(相關(guān)第三方庫(kù))
- 測(cè)試文件
所以我們這個(gè)項(xiàng)目的文檔結(jié)構(gòu)應(yīng)該也按此劃分
2.3 環(huán)境和第三方庫(kù)
沒(méi)有 venv環(huán)境,是由于我使用了本地已存在的環(huán)境,相關(guān)設(shè)置如下
【參考文章】CMD和Pycharm創(chuàng)建和激活虛擬環(huán)境
3. 應(yīng)用設(shè)置
3.1 工廠函數(shù)作用
在一個(gè)實(shí)際應(yīng)用中,會(huì)注冊(cè)很多路由(藍(lán)圖)、插件、工具或模塊,如何管理、注冊(cè)添加?
在Flask中工廠函數(shù)就是解決以上問(wèn)題的函數(shù),具體作用如下
- 注冊(cè)框架
- 設(shè)置SECRET_KEY和數(shù)據(jù)庫(kù)實(shí)例路徑
- 根據(jù)提供的參數(shù)啟動(dòng)特定模式,如開(kāi)發(fā)模式、測(cè)試模式、生產(chǎn)模式等。
- 創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例文件夾
- 返回框架實(shí)例:一個(gè)可調(diào)用框架對(duì)象。
- 注冊(cè)路由 — (后續(xù)使用)
- 注冊(cè)第三方組件 — (后續(xù)使用)
- 添加必要第三方配置 — (后續(xù)使用)
- 也可以將核心邏輯寫(xiě)在這里 — 不推薦
3.2 代碼實(shí)現(xiàn)
這個(gè)blog的工廠函數(shù)邏輯如下:
- 引入Flask框架
- 設(shè)置開(kāi)發(fā)模式參數(shù)
- 選擇判斷啟用環(huán)境(默認(rèn)為開(kāi)發(fā)模式,若提供測(cè)試模式參數(shù)則啟動(dòng)測(cè)試模式)
- 建立實(shí)例文件夾(保存數(shù)據(jù)庫(kù)的實(shí)例)
- 簡(jiǎn)單的hello頁(yè)面
- 反饋Flask的一個(gè)可調(diào)用對(duì)象(app)
Flask-project\flaskr\__inti__.py
import os
from flask import Flask
def create_app(test_config=None):
"""
工廠函數(shù)
:param test_config: 測(cè)試環(huán)境配置,默認(rèn)為空
:return: 已經(jīng)被配置好的Flask對(duì)象 app
"""
# 1.引入Flask框架
app = Flask(__name__, instance_relative_config=True)
# 2.設(shè)置SECRET_KEY和數(shù)據(jù)庫(kù)實(shí)例路徑
app.config.from_mapping(
SECRET_KEY='dev',
DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
)
# 3.根據(jù)提供的參數(shù)啟動(dòng)特定模式,如開(kāi)發(fā)模式、測(cè)試模式、生產(chǎn)模式等。
if test_config is None:
app.config.from_pyfile('config.py', silent=True)
else:
app.config.from_mapping(test_config)
# 4.創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例文件夾,沒(méi)有文件夾則建立,若已存在則報(bào)錯(cuò),但pass
try:
os.makedirs(app.instance_path)
except OSError:
pass
# 5.創(chuàng)建一個(gè)路由,驗(yàn)證工廠函數(shù)是否正常
@app.route('/hello/<name>')
def hello(name):
return 'Hello World! by {}'.format(name)
# 6.返回框架實(shí)例:一個(gè)可調(diào)用框架對(duì)象
return app
create_app 是一個(gè)應(yīng)用工廠函數(shù),后面的教程中會(huì)用到。這個(gè)看似簡(jiǎn)單的函數(shù)其實(shí)已經(jīng)做了許多事情。
-
app = Flask(__name__, instance_relative_config=True)
創(chuàng)建 Flask 實(shí)例。__name__ 是當(dāng)前 Python 模塊的名稱。應(yīng)用需要知道在哪里設(shè)置路 徑,使用 __name__ 是一個(gè)方便的方法。 instance_relative_config=True 告訴應(yīng)用配置文件是相對(duì)于 instance folder 的相對(duì)路徑。實(shí)例文件 夾在 flaskr 包的外面,用于存放本地?cái)?shù)據(jù)(例如配置密鑰和數(shù)據(jù)庫(kù)),不應(yīng)當(dāng)提交到版本控制系統(tǒng)。
-
app.config.from_mapping()
設(shè)置一個(gè)應(yīng) 用的缺省配置:SECRET_KEY 是被 Flask 和擴(kuò)展用于保證數(shù)據(jù)安全的。在開(kāi)發(fā)過(guò)程中,為了方便可以設(shè)置為 'dev' ,但是在發(fā)布的時(shí)候應(yīng)當(dāng)使用一個(gè)隨機(jī)值來(lái)重載它。 DATABASE SQLite 數(shù)據(jù)庫(kù)文件存放在路徑。它位于 Flask 用于存放實(shí)例的 app.instance_path 之內(nèi)。下一節(jié)會(huì)更詳細(xì)地學(xué)習(xí)數(shù)據(jù)庫(kù)的東西。
-
app.config.from_pyfile()
使用 config.py 中的值來(lái)重載缺省配置,如果 config.py 存在的話。 例如,當(dāng)正式部署的時(shí)候,用于設(shè)置一個(gè)正式的 SECRET_KEY 。test_config 也會(huì)被傳遞給工廠,并且會(huì)替代實(shí)例配置。這樣可以實(shí)現(xiàn)測(cè)試和開(kāi)發(fā)的配置分離,相互獨(dú)立。
-
os.makedirs()
可以確保 app.instance_path 存在。 Flask 不會(huì)自 動(dòng)創(chuàng)建實(shí)例文件夾,但是必須確保創(chuàng)建這個(gè)文件夾,因?yàn)?SQLite 數(shù)據(jù)庫(kù)文件會(huì)被保存在里面。 -
@app.route()
創(chuàng)建一個(gè)簡(jiǎn)單的路由,這樣在繼續(xù)教 程下面的內(nèi)容前你可以先看看應(yīng)用如何運(yùn)行的。它創(chuàng)建了 URL /hello 和一個(gè)函數(shù)之間的關(guān)聯(lián)。這個(gè)函數(shù)會(huì)返回一個(gè)響應(yīng),即一個(gè) ‘Hello, World!’ 字符串。
4. 運(yùn)行啟動(dòng)
4.1 命令行方式啟動(dòng)(根據(jù)環(huán)境選擇使用)
# CMD
> set FLASK_APP=flaskr
> set FLASK_ENV=development
> flask run
# powershell
> set FLASK_APP=flaskr
> set FLASK_ENV=development
> flask run
# bash
$ export FLASK_APP=flaskr
$ export FLASK_ENV=development
$ flask run
我測(cè)試的環(huán)境是win10 cmd。啟動(dòng)步驟為
1. 在cmd中先激活虛擬環(huán)境,【參考文章】CMD和Pycharm創(chuàng)建和激活虛擬環(huán)境
2. 再切換到項(xiàng)目路徑下(Flask-project\)
3. 輸入上述命令行命令(根據(jù)你的環(huán)境選用)
4 .瀏覽器輸入urlhttp://127.0.0.1:5000/hello/任意字符
4.2 Pycharm專業(yè)版一鍵啟動(dòng)方式
詳見(jiàn)截圖
以后每次啟動(dòng)就點(diǎn)擊右上角的綠色箭頭實(shí)現(xiàn)一鍵啟動(dòng),十分方便。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-784988.html
成功,工廠函數(shù)完成后,后續(xù)文章將繼續(xù)實(shí)現(xiàn)個(gè)人博客的各種功能。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-784988.html
到了這里,關(guān)于Python Flask框架-開(kāi)發(fā)簡(jiǎn)單博客-項(xiàng)目布局、應(yīng)用設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!