初涉FlaskWeb開發----基礎篇
1.web程序運行的基本流程
{客戶端發送請求 <-----> 服務器返回響應}
2.使用框架可以降低開發難度,提高開發效率。
3.Flask框架的基本認識:
特點:用Python語言實現的輕量、簡潔、擴展性強
核心:werkzeug 和 Jinja2
4.虛擬環境:
創建虛擬環境:mkvirtualenv -p python3 名稱
進入虛擬環境:workon
退出虛擬環境:deactivate
移除虛擬環境:rmvirtualenv 名稱
5.依賴包:
生成依賴包:pip freeze > requirements.txt
安裝依賴包:pip install -r requirements.txt
6.基本程序:
創建程序實例:__name__參數為字符串,表示模塊名,可以確定程序所在位置,如果傳入標準模塊名,會影響靜態路徑的訪問,不會影響視圖函數的訪問。
定義裝飾器路由:通過程序實例調用route函數實現,底層是通過add_url_rule()函數實現,第一個參數rule、第二個參數endpoint(視圖函數名的字符串形式),第三個參數視圖函數名。
啟動服務器:run方法可以啟動服務器,可以指定調試debug,便於調試代碼信息,自動跟蹤代碼的變化。
1 # 導入Flask 2 from flask import Flask 3 4 # 創建Flask類的對象 5# 結論:__name__參數的作用:確認程序實例文件所在的位置。 6 # 1、必須要傳入參數 7 # 2、參數類型必須是字符串 8 # 3、如果傳入標準模塊名,只會影響靜態路徑的訪問,不會影響視圖函數的訪問。 9 app = Flask(__name__) 10 11 12 # 定義路由url地址 13 # endpoint:表示視圖函數名的字符串形式。 14 # 不使用裝飾器也可以實現路由映射。 15 16 @app.route(‘/Lee‘,methods=[‘POST‘,‘GET‘]) 17 def hello2018(): 18 # return 可以返回狀態碼,也可以返回不符合http協議的狀態碼,用來實現前後端的數據交互19 """ 20 前端發送ajax: 21 $.ajax({ 22 url:‘/Lee‘, 23 data:。。。, 發送到後端的數據 24 contentType:‘‘, 發送到後端的數據類型 25 dataType:‘json‘ 後端返回的數據類型 26 success:function(resp){ 27 if (resp == ‘888‘){ 28 alert(errmsg) 29 }else{ 30 31 } 32 33 34 } 35 }) 36 37 errno=888,errmsg=‘用戶名已註冊‘ 38 39 40 :return: 41 """ 42 return ‘hello world2018‘,888 43 # self.add_url_rule(rule, endpoint, f, **options) 44 # 通過程序實例調用添加url規則,也可以實現路由映射。 45 # app.add_url_rule(‘/123‘,‘hello2018‘,hello2018) 46 47 # 結論: 48 # 1、視圖函數不能重名。 49 # 2、url可以重復,不同的http請求方法,是對應不同的操作get查詢post插入put修改delete刪除 50 # @app.route(‘/‘) 51 # def hello2019(): 52 # a = 1 53 # b = 2 54 # return a,b 55 # 不能返回字典 56 # my_dict = {‘a‘:‘123‘} 57 # return my_dict 58 # 不能返回列表 59 # my_list = [1,2,3] 60 # return my_list 61 # 可以返回元組 62 # return ‘hello world‘ 63 64 65 # 啟動服務器 66 # __name__表示當前模塊名,如果被導入文件的時候__name__表示文件名 67 if __name__ == ‘__main__‘: 68 # 查看路由映射:具體的url地址和視圖函數名的指向關系。 69 print(app.url_map) 70 # debug調試模式:幫助定位錯誤信息,自動跟蹤代碼的變化 71 app.run(debug=True)
7.基本程序擴展:
視圖函數不能重名
URL可以重復,因為不同的http請求方法代表不同的操作
路徑的訪問順序是從上到下依次查找,如果找到不會繼續往下查找
8.加載配置信息:
加載配置對象
加載配置文件ini格式文件
加載環境變量
1 from flask import Flask 2 # 導入配置類 3 # from config import Config 4 from config import config_dict 5 app = Flask(__name__) 6 # 加載配置文件:三種實現形式 7 # 1、加載配置對象,config是flask內置的配置對象 8 # 重點掌握:因為擴展性更強 9 # app.config.from_object(Config) 10 # app.config.from_object(config_dict[‘pro‘]) 11 # 2、加載配置文件 12 # app.config.from_pyfile(‘config.ini‘) 13 # 3、加載環境變量 14 # app.config.from_envvar(‘SET‘) 15 16 17 @app.route(‘/‘) 18 def index(): 19 return ‘hello world‘ 20 21 if __name__ == ‘__main__‘: 22 app.run()
config.py文件:
# 基本配置類 class Config: DEBUG = None # 開發模式配置 class DevelopmentConfig(Config): DEBUG = True # 生產模式配置 class ProductionConfig(Config): DEBUG = False # 定義字典,實現配置類的映射 config_dict = { ‘dev‘:DevelopmentConfig, ‘pro‘:ProductionConfig }
9.狀態碼:
return可以返回不符合http協議的狀態碼,用來前後端的數據交互。
10.重定向:
redirect----參數是具體的URL地址
url_for ----參數是視圖函數名(端點endpoint)
# 導入flask內置的函數redirect from flask import Flask,redirect,url_for app = Flask(__name__) # 重定向redirect:接收參數為location,具體的url地址 # 重新發送網絡請求,跳轉頁面 # 當項目路徑(url)或文件發生變化的情況下,可以使用重定向。 @app.route(‘/‘) def index(): url = ‘http://www.baidu.com‘ # 重定向到百度 return redirect(url) # url_for反向解析:接收的參數endpoint,視圖函數名 @app.route(‘/for‘) def demo_url_for(): return redirect(url_for(‘index‘)) if __name__ == ‘__main__‘: print(app.url_map) app.run(debug=True)
初涉FlaskWeb開發----基礎篇