您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關flask初始化配置文件和使用的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
項目環境配置
安裝python環境
校驗python 和pip是否安裝好
//查看python安裝 python -V //查看pip安裝 pip -V
新建項目文件夾 demo
mkdir flaskdemo cd flaskdemo
安裝 pipenv
pip install pipenv # 這個是進行虛擬環境管理的工具,不同的項目分割不同的環境
進入到項目文件夾下,安裝虛擬環境
//創建虛擬環境,如果里面有配置文件,會直接安裝配置中的插件 pipenv install //激活虛擬環境 pipenv shell //退出 exit //卸載包 pipenv uninstall flask //查看包依賴關系 pipenv graph //進入虛擬環境中,查看虛擬環境的安裝目錄 pipenv --venv
tips:在windows退出環境時沒有提示,linux有提示
安裝各種包:一下為基礎通用的各種包,選擇安裝。
# 安裝flask pipenv install flask # mysql驅動 pinenv install cymysql==0.9.1 # web登錄插件 pipenv install flask-login # email插件 pipenv install flask-mail # 表單字段校驗插件 pipenv install WIForms # 請求庫插件 pipenv install requests # 數據庫映射插件 pipenv install Flask-SQLAlchemy # 驗證登錄相關 Flask-HTTPAuth==2.7.0 # 其他相關 Flask-Cors==2.1.0 Flask-WTF==0.14.2
開發工具: Pycharm,Xampp(mysql),Navicat(數據庫可視化工具)
項目的初始化
新建配置文件:新建文件目錄 app/config, 新建配置文件 secure.py 和 settings.py,主要存儲項目中的配置信息
創建自定義 app/libs/redprint.py flask默認的是blueprint主要用作模塊的區分,不建議為了分離視圖是用 blueprint,可以優化url的路徑
# 根據 blueprint源碼的實現 class RedPrint: def __init__(self, name): self.name = name self.mound = [] def route(self, rule, **options): def decorator(f): self.mound.append((f, rule, options)) return f return decorator def register(self, bp, url_prefix=None): """ 將 redprint注冊到 blueprint,實際調用 blueprint代碼 """ if url_prefix is None: url_prefix = '/' + self.name for f, rule, options in self.mound: endpoint = options.pop("endpoint", f.__name__) bp.add_url_rule(url_prefix + rule, endpoint, f, **options)
創建視圖函數文件
from app.libs.redprint import RedPrint api = RedPrint('book') @api.route('/create') def create_book(): return 'create_book' @api.route('/get') def get_book(): return 'get_book' ------------------------------------------------------ from app.libs.redprint import RedPrint api = RedPrint('user') # url /v1/user/create @api.route('/create') def create_user(): return 'create_user' @api.route('/get') def get_user(): return 'get_user'
在 v1/init.py 注冊 redprint
from flask import Blueprint from app.api.v1 import book from app.api.v1 import user def create_blueprint_v1(): """ 創建 blueprint 并對 自定義的 redprint進行注冊 :return: """ bp_v1 = Blueprint("v1",__name__) book.api.register(bp_v1, url_prefix='/book') user.api.register(bp_v1, url_prefix='/user') return bp_v1
新建 ginger/app.py文件,flask核心對象相關的初始化的操作
tips:進入之后,可能包不能導入,需要自己手動確認設置虛擬環境
from flask import Flask def register_blueprint(app): from app.api.v1 import create_blueprint_v1 blueprint = create_blueprint_v1() app.register_blueprint(blueprint, url_prefix='/v1')def create_app(): app = Flask(__name__) # 導入配置文件 app.config.from_object('app.config.settings') app.config.from_object('app.config.secure') # 注冊blueprint register_blueprint(app) return app
其他相關
from flask import Flask app = Flask(__name__) # 導入配置文件,導入的是模塊,app.config 是dict的子類 app.config.from_object('config') # 定義路由規則 @app.route("/hello/") #這種方式底層也是通過 add_url_rule實現的 def hello(): # 這種方式為函數視圖 # 另外一種基于類的視圖(即插視圖),可以復用便于擴展 return "hello word" # 啟動,配置debug=true表明為debug模式,每次修改代碼保存之后,會列出詳細錯誤信息,服務器會自動重啟,不用自己手動重啟 # 這種方式的話不能被外網,局域網訪問,只能通過 127.0.0.1這種方式訪問 # 將host =‘0.0.0.0’的方式支持外網訪問 # if 中的語句只在入口文件中執行 if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=app.config['DEBUG'])
URL配置說明
url配置為 "/hello/",可以兼容 url為hello,和url為hello/ 的情況,這種方式flask是通過 url重定向來實現的, 為了是保證url的唯一性,跟seo的優化有關系. 一般直接配置為 /hello def hello():這種為函數視圖的方式,還有另外一種方式,為基于類的視圖(即插視圖),基于類可以復用便于擴展
路由注冊方式
#這種方式為裝飾器的方式,查看源碼底層也是采用的是 app.add_url_rule這種方式注冊的 @app.route("/hello/") #直接配置注冊的方式,基于類的視圖這種,必須是這種方式 app.add_url_rule('/hello',view_func=hello)
app.run()參數
默認的app.run(debug=True),這種方式是不能被外網,局域網訪問,只能通過127.0.0.1這種方式訪問 將host修改為 '0.0.0.0',可以允許外網訪問,可以指定端口 app.run(host='0.0.0.0',port=5000,debug=True)
統一配置文件:一般的環境切換更改等方式通過配置文件的方式來,不易出錯
創建配置文件 config.py
#config.py 配置示例 # encoding: utf-8 DEBUG =True 一種方式:直接導入的方式 from config import DEBUG app.run(debug=TEBUG) 導入模塊的方式,注意路徑,此時 config文件與 app同級,推薦這種方式 app.config.form_object('config') **tips** 通過app.config 導入的方式,獲取值的時候 key 必須大寫,app.config['DEBUG'],否則會出錯. app.config['DEBUG'],即使在配置文件沒有配置該 DEBUG,打印的時候 也會有值 false ,因為 DEBUG 是在app.config 默認參數, 如果要覆蓋該 DEBUG值,在配置文件中必須大寫
tips:可能存在需要導包的情況,需要設置虛擬環境
file->settings->procject->project interpreter ->選擇對應的虛擬環境即可
Restful
實際經驗區分:
標準的restful 適合對外提供,不用考慮太多的業務邏輯
在內部項目中,如有多個資源,需要同時操作,那需要多次的 http請求,而且對資源的設計需要很高的要求。
關于flask初始化配置文件和使用的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。