人生苦短,我用Python(四)—通過Flask結合Bootstrap框架快速搭建Web應用-1
寫在前面:
Flask是一個給予Python開發,依賴jinja2模板和Werkzeug WSGI服務的一個微型框架。Werkzeug用來處理Socket服務,其在Flask中被用於接受和處理http請求;Jinja2被用來對模板進行處理,將模板和資料進行渲染,返回給使用者的瀏覽器。
Bootstrap是由Twitter推出的一個用於前端開發的開源工具包,給予HTML、CSS、JavaScriot,提供簡潔、直觀、強悍的前端開發框架,是目前最受環境的前端框架。
好吧,其實以上,作者也不是很懂,讓我們直接開始吧。
開始動手:
可以通過Pycharm建立Flask專案,Pycharm會自動幫你安裝Flask以及其他依賴的程式,併為你設計程式的目錄架構
第一段Flask程式:
專案建立完成以後,我們會發現Pycharm以貼心的幫你寫了好了一段python程式,下面對其中的一些部分,做簡要的解釋:
[email protected]('/')
當客戶端將請求傳送給web伺服器時,web伺服器將請求傳送給Flask程式,這時Flask程式需要知道對應客戶端URL請求,需要執行哪些程式碼、實現什麼功能。這時,需要將URL與Python函式,形成一個對映關係。
使用flask提供的app.route()修飾器,可以實現以上功能。
2.def hello_world():
這段不用多說,這是一段python函式,這段函式的功能是返回Hello World!這段字串
於是在上文中的這段程式碼將url“/”與hello_world這段函式形成了對應關係
實現了,當客戶端請求的url為“/”時,返回字串“Hello World!”的功能,讓我們將程式跑起來試一下
我們可以看到,程式會提示你當前程式執行在http://127.0.0.1:5000/
埠5000是Flask預設執行的埠。當然,Flask也支援對工作的埠進行修改,修改的方法在後文中會提到。
我們開啟http://127.0.0.1:5000/開一下效果:
實現URL與Python函式的對應
我們可以看到,當請求的URL為"/"時,返回“Hello World!”字串,實現了我們上述提到的功能。
那麼,我們嘗試新建一段URL與python函式的對應關係,試一下:
@app.route('/welcome')
def welcome():
return 'Welcome to My World!'
將URL“/welcome”與welcome()函式,進行對應,返回“Welcome to My World!”字串。執行程式試一下:
瀏覽器輸入127.0.0.1:5000/welcome
我們可以看到,這裡實現了我們想要的結果。
於是,我們可以利用URL與python函式的對應關係,當url請求為不同的請求時,後臺呼叫不同的python函式,實現我們想要的功能
例如當用戶請求URL“/1+1”對應執行,1+1
@app.route('/1+1')
def calcu():
i=1+1
return str(i)
結果如下圖:
更改Flask提供服務的IP地址和埠
要指定Flask程式提供的服務工作的IP地址和埠,可以通過一下兩個方式:
-
在app.run()中指定,修改host和port引數,網上也有很多用這種方式進行修改的,但在pycharm中,修改不生效
-
通過命令列執行:flask run --host 127.0.0.1 --port 1234
通過Flask返回模板
在這裡,我們可以通過render_template函式,實現Flask返回html檔案
render_template實際是通過的Jinja2渲染的模板
首先在template中建立html檔案:
同樣,在通過Pycharm建立HTML檔案的時候,會預先將HTML檔案的格式預置好
接著,修改部分程式碼,將URL“/welcome”與返回該模板進行對應:
from flask import Flask,render_template
@app.route('/welcome')
def welcome():
return render_template('test.html')
我們看一下實際效果:
總結
我們可以通過這樣的方式,將使用者請求不同的URL時,返回不同的html模板
於是在這裡我們將Flask與Bootstrap進行結合,Flask負責處理使用者請求,和一些python程式的呼叫、Bootsrtap框架提供HTML檔案,為使用者提供頁面展示。
下一篇,我們講講Bootstrap的一些使用方法