一:虛擬環境搭建的兩種方式
pip install --user pipenv安裝pipenv在用戶目錄下 py -m site --user-site通過此命令找到用戶基礎目錄,結果為C:\Users\u14e\AppData\Roaming\Python\Python35\site-packages 將用戶基礎目錄結尾的site-packages換成Scripts,即C:\Users\u14e\AppData\Roaming\Python\Python35\Scripts,然后將這一路徑添加到系統變量中 重新打開命令行工具,如cmd,pipenv --version檢查是否安裝成功 pipenv install創建一個虛擬環境 pipenv shell激活虛擬環境,exit推出虛擬環境 pipenv install requests安裝python包,pipenv install django==1.11.7安裝制定版本的包,pipenv uninstall requests卸載包 pipenv graph查看安裝的包,以及依賴的其他包
2 pip virtualenv(使用workon進行管理)的使用
# 1 安裝 pip install virtualenv virtualenv --version # 非Windows # pip install virtualenvwrapper # Windows pip install virtualenvwrapper-win # 查看當前所有的虛擬環境 workon # 創建一個虛擬環境 mkvirtualenv new_env # 刪除一個虛擬環境 rmvirtualenv new_env
3 一次性導入多包方法(解決環境兼容問題)
# 在當前環境中將路徑切到項目包打包txt文件目錄下 - 項目依賴 pip3 install pipreqs - 生成依賴文件:pipreqs ./ --encoding=='utf-8' - 安裝依賴文件:pip3 install -r requirements.txt
二:Flask的簡單實用和藍圖
1 簡單使用
# app.py from flask import Flask def create_app(): app = Flask(__name__) # 指定位置信息 app.config.from_object('app.config.setting') app.config.from_object('app.config.secure') register_blueprint(app) return app # genger.py---啟動文件 from app.app import create_app app = create_app() @app.route('/v1/user/get') def get_user(): return 'i am andy' @app.route('/v1/book/get') def get_book(): return 'this is get book ' if __name__ == '__main__': app.run(debug=True)
2 藍圖的使用

# 分別設置藍圖 # book.py from flask import Blueprint book = Blueprint('book', __name__) @book.route('/v1/book/get') def get_book(): return 'this is get book ' # user.py from flask import Blueprint user = Blueprint('user', __name__) @user.route('/v1/user/get') def get_user(): return 'i am andy' # app.py(生成app並注冊藍圖) from flask import Flask def register_blueprint(app): from app.api.v1.user import user from app.api.v1.book import book app.register_blueprint(user) app.register_blueprint(book) def create_app(): app = Flask(__name__) # 指定位置信息 app.config.from_object('app.config.setting') app.config.from_object('app.config.secure') register_blueprint(app) return app # 啟動文件 from app.app import create_app app = create_app() if __name__ == '__main__': app.run(debug=True)
3 藍圖的機制缺點
1 Blurpring藍圖不是用來拆分視圖函數的,應該是用來模塊級別的拆分
2 寫路由的時候太繁瑣(重復勞動,比如我寫v1/book/get,又要寫一個接口是v1/book/delete)
三:自定義紅圖
1 創建紅圖流程
新建一個包libs,里面放置的是紅圖的方法
#創建紅圖 class Redprint: def __init__(slef,name): self.name = name self.mound = [] def route(self,rule,**options): def decorator(f): # f就是所裝飾的方法試圖,rule就是路由,options就是關鍵字參數,比如,methods=['get','post'] self.mound.append((f,rule,options)) return f return decorator def register(self, bp, url_prefix=None): 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) # book.py(使用紅圖) from app.libs.redprint import Redprint api = Redprint('book') @api.route('/get') def get_book(): return 'this is get book ' # v1/__init__.py(創建藍圖對象,並在藍圖對象中注冊紅圖) from flask import Blueprint from app.api.v1 import book, user def create_blueprint_v1(): bp_v1 = Blueprint('v1', __name__) user.api.register(bp_v1) book.api.register(bp_v1) return bp_v1 # app.py(將藍圖注冊到app對象中) from flask import Flask def register_blueprint(app): from app.api.v1 import create_blueprint_v1 app.register_blueprint(create_blueprint_v1(), url_prefix='/v1') # 藍圖補充路由的前綴 def create_app(): app = Flask(__name__) # 指定位置信息 app.config.from_object('app.config.setting') app.config.from_object('app.config.secure') register_blueprint(app) return app