跟我學Flask(二)-從HelloWorld講起
阿新 • • 發佈:2018-11-17
從本節開始,會一步步帶領大家從零開發一個網站,前面為理論教程,後面為專案實戰
本節主要以例項為主,熟悉flask基本語法,下一節會介紹程式執行的流程
一、從簡單的Hello World開始
我們先看一段最簡單的程式碼,然後在進行具體的分析
# 匯入Flask
from flask import Flask
# 建立Flask類的物件
app = Flask(__name__)
#定義路由地址
@app.route('/')
def hello():
#返回資料
return 'hello world'
if __name__=='__main__' :
app.run()
執行程式碼後會在本地開啟伺服器,瀏覽器訪問該網址就能看到頁面上打印出了helloworld
127.0.0.1是本地主機地址,5000為預設的埠號
二、初始化引數
Flask 程式例項在建立的時候,需要預設傳入當前 Flask 程式所指定的包(模組),接下來就來詳細檢視一下 Flask 應用程式在建立的時候一些需要我們關注的引數:
- import_name
- 必須傳入該引數
- Flask程式所在的包(模組),傳
__name__
就可以 - 引數型別必須是字串
- 如果傳入標準模組名,只會影響靜態路徑的訪問,不會影響檢視函式的訪問。
- static_path
- 靜態檔案訪問路徑(不推薦使用,使用 static_url_path 代替)
- static_url_path
- 靜態檔案訪問路徑,可以不傳,預設為:
/ + static_folder
- 靜態檔案訪問路徑,可以不傳,預設為:
- static_folder
- 靜態檔案儲存的資料夾,可以不傳,預設為
static
- 靜態檔案儲存的資料夾,可以不傳,預設為
- template_folder
- 模板檔案儲存的資料夾,可以不傳,預設為
templates
- 模板檔案儲存的資料夾,可以不傳,預設為
三、路由引數配置
@app.route('/add' ,methods=['POST','GET','PUT','DELETE'])
def add():
pass
上面程式碼作用:通過裝飾器定義路由url地址,在瀏覽器訪問此url時呼叫被裝飾的函式
上面的add函式為檢視函式,檢視函式不能重名,但url可以重複,因為同一url地址可能有不同的請求方法,所以一般使用列表來儲存路由對映
可以使用app.url_map
獲取路由對映表
第一個引數為路由地址,第二個引數為方法,方法可以指定多個,不指定時預設為GET
不使用裝飾器也可以實現路由對映。
# 通過程式例項呼叫新增url規則,也可以實現路由對映。
app.add_url_rule('/123','add',add)
四、檢視函式
上面程式碼中add函式為檢視函式,檢視函式主要作用為接受引數,業務處理,返回想用資料
具體接受引數問題會單獨一篇文章說明
# 1、檢視函式不能重名。
# @app.route('/')
# def hello2019():
# a = 1
# b = 2
# return a,b
# 不能返回字典
# my_dict = {'a':'123'}
# return my_dict
# 不能返回列表
# my_list = [1,2,3]
# return my_list
-
返回值型別
return (需要返回的資料, 狀態碼, 響應資訊)
需要返回的資料必須為字串,如果返回json型別資料,需要先進行轉換
所以返回值可以為元組,但元組中資料格式要與上面相符
-
返回json資料
# 返回json資料方法一
@app.route("/")
def index():
# return '<h1>hello world</h1>'
data = {'itcast':'python18'}
# 呼叫標註模組json中的dumps方法,把字典轉成json
# json.dump()
return json.dumps(data)
# return data
# 返回json資料方法二(常用)
@app.route('/json')
def hello():
data = {'itcast':'sy_python18'}
# jsonify是flask內建的函式,可以把字典轉成json字串
# jsonify封裝了響應的資料型別為application/json;image/jpg
return jsonify(data)