認識web
url詳解:
URL
是Uniform Resource Locator
的簡寫,統一資源定位符。
一個URL
由以下幾部分組成:
-
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