1. 程式人生 > >Python web開發:Flask的專案配置

Python web開發:Flask的專案配置

認識web

url詳解:

URL是Uniform 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請求,響應靜態檔案,常見的有Apache,Nginx以及微軟的IIS.
應用伺服器:負責處理邏輯的伺服器。比如php、python的程式碼,是不能直接通過nginx這種web伺服器來處理的,只能通過應用伺服器來處理,常見的應用伺服器有uwsgi、tomcat等。
web應用框架:一般使用某種語言,封裝了常用的web功能的框架就是web應用框架,flask、Django以及Java中的SSH(Structs2+Spring3+Hibernate3)框架都是web應用框架。

Flask簡介:

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

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

微框架、簡潔、只做他需要做的,給開發者提供了很大的擴充套件性。
Flask和相應的外掛寫得很好,用起來很爽。
開發效率非常高,比如使用SQLAlchemy的ORM操作資料庫可以節省開發者大量書寫sql的時間。
Flask的靈活度非常之高,他不會幫你做太多的決策,一些你都可以按照自己的意願進行更改。比如:

使用Flask開發資料庫的時候,具體是使用SQLAlchemy還是MongoEngine,選擇權完全掌握在你自己的手中。區別於Django,Django內建了非常完善和豐富的功能,並且如果你想替換成你自己想要的,要麼不支援,要麼非常麻煩。
把預設的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.config是flask.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