歡迎光臨
每天分享高質量文章

Python web開發:Flask的專案配置

認識web

url詳解:

URLUniform Resource Locator的簡寫,統一資源定位符。

一個URL由以下幾部分組成:

scheme://host:port/path/?query-string=xxx#anchor
  • 1

  • scheme:代表的是訪問的協議,一般為http或者https以及ftp等。

  • host:主機名,域名,比如www.baidu.com

  • port:埠號。當你訪問一個網站的時候,瀏覽器預設使用80埠。

  • path:查詢路徑。比如:www.jianshu.com/trending/now,後面的trending/now就是path

  • query-string:查詢字串,比如:www.baidu.com/s?wd=python,後面的wd=python就是查詢字串。

  • anchor:錨點,後臺一般不用管,前端用來做頁面定位的。

註意:URL中的所有字元都是ASCII字符集,如果出現非ASCII字元,比如中文,瀏覽器會進行編碼再進行傳輸。

web伺服器和應用伺服器以及web應用框架:

  • web伺服器:負責處理http請求,響應靜態檔案,常見的有ApacheNginx以及微軟的IIS.

  • 應用伺服器:負責處理邏輯的伺服器。比如phppython的程式碼,是不能直接透過nginx這種web伺服器來處理的,只能透過應用伺服器來處理,常見的應用伺服器有uwsgitomcat等。

  • web應用框架:一般使用某種語言,封裝了常用的web功能的框架就是web應用框架flaskDjango以及Java中的SSH(Structs2+Spring3+Hibernate3)框架都是web應用框架。

Flask簡介:

flask是一款非常流行的Python Web框架,出生於2010年,作者是Armin Ronacher,本來這個專案只是作者在愚人節的一個玩笑,後來由於非常受歡迎,進而成為一個正式的專案。目前為止最新的版本是0.12.2

flask自2010年釋出第一個版本以來,大受歡迎,深得開發者的喜愛,並且在多個公司已經得到了應用,flask能如此流行的原因,可以分為以下幾點:

  • 微框架、簡潔、只做他需要做的,給開發者提供了很大的擴充套件性。

  • Flask和相應的外掛寫得很好,用起來很爽。

  • 開發效率非常高,比如使用SQLAlchemyORM運算元據庫可以節省開發者大量書寫sql的時間。

Flask的靈活度非常之高,他不會幫你做太多的決策,一些你都可以按照自己的意願進行更改。比如:

  • 使用Flask開發資料庫的時候,具體是使用SQLAlchemy還是MongoEngine,選擇權完全掌握在你自己的手中。區別於DjangoDjango內建了非常完善和豐富的功能,並且如果你想替換成你自己想要的,要麼不支援,要麼非常麻煩。

  • 把預設的Jinija2模板引擎替換成其他模板引擎都是非常容易的。

第一個flask程式:

pycharm新建一個flask專案,新建專案的截圖如下: 

點選create後建立一個新專案,然後在helloworld.py檔案中書寫程式碼:

#coding: utf8

# 從flask框架中匯入Flask類
from flask import Flask

# 傳入__name__初始化一個Flask實體
app = Flask(__name__)

# app.route裝飾器對映URL和執行的函式。這個設定將根URL對映到了hello_world函式上
@app.route('/')
def hello_world():
return 'Hello World!'

if __name__ == '__main__':
# 執行本專案,host=0.0.0.0可以讓其他電腦也能訪問到該網站,port指定訪問的埠。預設的host是127.0.0.1,port為5000
app.run(host='0.0.0.0',port=9000)

然後點選執行,在瀏覽器中輸入http://127.0.0.1:9000就能看到hello world了。需要說明一點的是,app.run這種方式只適合於開發,如果在生產環境中,應該使用Gunicorn或者uWSGI來啟動。如果是在終端執行的,可以按ctrl+c來讓服務停止。

pycharm 2018開啟debug樣式和修改host:

Pycharm 2018中,如果想要開啟debug樣式和更改埠號,則需要編輯專案配置。直接在app.run中更改是無效的。示例圖如下: 

專案配置

設定為DEBUG樣式:

預設情況下flask不會開啟DEBUG樣式,開啟DEBUG樣式後,flask會在每次儲存程式碼的時候自動的重新載入程式碼,並且如果程式碼有錯誤,會在終端進行提示。

開啟DEBUG樣式有三種方式:

直接在應用物件上設定:

app.debug = Trueapp.run()

在執行run方法的時候,傳遞引數進去:

app.run(debug=True)

config屬性中設定:

app.config.update(DEBUG=True)

如果一切正常,會在終端列印以下資訊:

* Restarting with stat* Debugger is active!* Debugger pin code: 294-745-044* Running on http://0.0.0.0:9000/ (Press CTRL+C to quit)

需要註意的是,只能在開發環境下開啟DEBUG樣式,因為DEBUG樣式會帶來非常大的安全隱患。

另外,在開啟了DEBUG樣式後,當程式有異常而進入錯誤堆疊樣式,你第一次點選某個堆疊想檢視變數值的時候,頁面會彈出一個對話方塊,讓你輸入PIN值,這個PIN值在你啟動的時候就會出現,比如在剛剛啟動的專案中的PIN值為294-745-044,你輸入這個值後,Werkzeug會把這個PIN值作為cookie的一部分儲存起來,併在8小時候過期,8小時以內不需要再輸入PIN值。這樣做的目的是為了更加的安全,讓除錯樣式下的攻擊者更難攻擊到本站。

pycharm開啟debug樣式:

配置檔案:

Flask專案的配置,都是透過app.config物件來進行配置的。比如要配置一個專案處於DEBUG樣式下,那麼可以使用app.config['DEBUG] = True來進行設定,那麼Flask專案將以DEBUG樣式執行。在Flask專案中,有四種方式進行專案的配置:

直接硬編碼:

app = Flask(__name__)
app.config['DEBUG'] = True

因為app.configflask.config.Config的實體,而Config類是繼承自dict,因此可以透過update方法:

app.config.update(
DEBUG=True,
SECRET_KEY='...'
)

如果你的配置項特別多,你可以把所有的配置項都放在一個模組中,然後透過載入模組的方式進行配置,假設有一個settings.py模組,專門用來儲存配置項的,此時你可以透過app.config.from_object()方法進行載入,並且該方法既可以接收模組的的字串名稱,也可以模組物件:

# 1. 透過模組字串

app.config.from_object('settings')

# 2. 透過模組物件

import settings
app.config.from_object(settings)

也可以透過另外一個方法載入,該方法就是app.config.from_pyfile(),該方法傳入一個檔案名,通常是以.py結尾的檔案,但也不限於只使用.py字尾的檔案:

app.config.from_pyfile('settings.py',silent=True)

# silent=True表示如果配置檔案不存在的時候不丟擲異常,預設是為False,會丟擲異常。

作者:南窗客斯黃

源自:

https://blog.csdn.net/nunchakushuang/article/list/2

贊(0)

分享創造快樂