一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

AutoLine源碼分析之Flask初始化模塊

 開(kāi)源優(yōu)測(cè) 2021-12-09

什么是AutoLine開(kāi)源平臺(tái)

AutoLine開(kāi)源平臺(tái)是一個(gè)開(kāi)源自動(dòng)化測(cè)試解決方案,基于RobotFramework進(jìn)行二次開(kāi)發(fā),支持RobotFramework幾乎所有的庫(kù)。

源碼地址

github地址: https://github.com/small99/AutoLine

碼 云 地 址:https:///lym51/AutoLine

前言

        Flask初始化主要完成以下幾個(gè)功能:

  1. 創(chuàng)建Flask應(yīng)用

  2. 初始化相關(guān)基礎(chǔ),例如數(shù)據(jù)庫(kù)對(duì)象、配置管理、郵件、登錄試圖、blueprint注冊(cè)等等

  3. 利用flask初始化函數(shù)加載默認(rèn)或讀取配置文件初始化2中的相關(guān)環(huán)境

代碼模塊

初始化flask模塊和調(diào)用flask初始化主要在如下圖所示的模塊中:

其中:

__init__.py  定義和實(shí)現(xiàn)了flask的相關(guān)環(huán)境初始化

manage.py 中使用指定的配置調(diào)用create_app完成實(shí)際初始化動(dòng)作

源碼分析

# -*- coding: utf-8 -*-

__author__ = "苦葉子"

"""

公眾號(hào): 開(kāi)源優(yōu)測(cè)

Email: lymking@foxmail.com

"""

# 導(dǎo)入flask
from flask import Flask
# 導(dǎo)入flask郵件插件
from flask_mail import Mail
# 導(dǎo)入SQLAlchemy,用于數(shù)據(jù)庫(kù)管理
from flask_sqlalchemy import SQLAlchemy
# 導(dǎo)入登錄管理
from flask_login import LoginManager
# 導(dǎo)入自己寫(xiě)的配置變量,請(qǐng)參見(jiàn)config.py模塊中定義的config變量
from config import config

# 初始化郵件對(duì)象
mail = Mail()
# 初始化數(shù)據(jù)庫(kù)對(duì)象
db = SQLAlchemy()
# 初始化登錄管理及登錄視圖
login_manager = LoginManager()
login_manager.login_view = 'auth.login'

# 創(chuàng)建flask應(yīng)用函數(shù)
def create_app(config_name):
# 初始化flask應(yīng)用,并將配置導(dǎo)入之a(chǎn)pp上下文環(huán)境
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)

# 對(duì)不同的對(duì)象都要初始化flask上下文環(huán)境的目的是:
# 為了上這些能夠在flask上下文環(huán)境中使用
# 初始化郵件flask上下文環(huán)境
   mail.init_app(app)
# 初始化數(shù)據(jù)庫(kù)flask上下文環(huán)境
   db.init_app(app)
# 初始化登錄管理flask上下文環(huán)境
login_manager.init_app(app)

# 判斷是否配置了ssl,是則初始化ssl上下文環(huán)境
   if app.config['SSL_REDIRECT']:
from flask_sslify import SSLify
sslify = SSLify(app)

# 注冊(cè)靜態(tài)導(dǎo)航藍(lán)圖(blueprint)
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)

# 注冊(cè)認(rèn)證導(dǎo)航藍(lán)圖
from .auth import auth as auth_blueprint
app.register_blueprint(auth_blueprint, url_prefix='/auth')

# 注冊(cè)restful api藍(lán)圖
from .api import api_bp as api_blueprint
app.register_blueprint(api_blueprint, url_prefix='/api/v1')

# 將創(chuàng)建并初始化好的flask應(yīng)用返回
return app

下面我們看下在manage.py中如何調(diào)用create_app來(lái)初始化全局flask運(yùn)行環(huán)境的。

因?yàn)樯衔?a target="_blank">AutoLine源碼分析之配置管理已經(jīng)全面的分析了manage.py,本文就截取flask應(yīng)用創(chuàng)建的關(guān)鍵代碼:

  1. 在manage.py中導(dǎo)入create_app函數(shù)及db變量

from app import create_app, db

  2. 調(diào)用create_app初始化flask應(yīng)用

app = create_app(os.environ.get('AUTOBEAT_CONFIG') or 'default')

  3.  因?yàn)槲覀冇胒lask migrate來(lái)集成和管理數(shù)據(jù)遷移我們的flask應(yīng)用,所以需要用我們創(chuàng)建的app來(lái)初始化migrate環(huán)境及數(shù)據(jù)遷移

# 創(chuàng)建manager對(duì)象,并初始化migrate環(huán)境(用于數(shù)據(jù)庫(kù)遷移、升級(jí)等)
manager = Manager(app)
migrate = Migrate(app, db)

# 創(chuàng)建migrate shell上下文
def make_shell_context():
return dict(app=app, db=db, User=User, Role=Role)

# 新增一些shell 命令
manager.add_command('shell', Shell(make_context=make_shell_context))
manager.add_command('db', MigrateCommand)

  4.  主函數(shù),在main函數(shù)中我們通過(guò)manager.run() 來(lái)運(yùn)行我們的flask應(yīng)用


if __name__ == '__main__':

check_python_version()
check_version()

if "runserver" in sys.argv:
start_trigger()

output_logo()

manager.run()

總結(jié)

        創(chuàng)建flask應(yīng)用的代碼不多,但涉及的知識(shí)面比較廣,例如你需要了解:

  1. flask創(chuàng)建一個(gè)基本服務(wù)的過(guò)程,你可以看下這個(gè)文檔 http://docs./docs/flask/quickstart.html#a-minimal-application

  2. 你需要了解什么是sqlalchemy(python下很完美的ORM框架,支持mysql、mssql、mangodb、oracel等等數(shù)據(jù)庫(kù)的管理)http://www./

  3. 你需要了解migrate如何做數(shù)據(jù)庫(kù)的遷移、升級(jí)等等http://flask-migrate./en/latest/

其他的知識(shí)點(diǎn)就不列了,大家根據(jù)關(guān)鍵字自己去搜索,上述三個(gè)可以先大致瀏覽一下,自己跟著AutoLine的目錄結(jié)構(gòu)把代碼敲一遍,要是能在敲完后,跑起來(lái),那你就掌握了不少東西了。

AutoLine源碼分析之開(kāi)始篇

AutoLine源碼分析之入口源碼

AutoLine源碼分析之配置管理

AutoLine源碼分析之?dāng)?shù)據(jù)庫(kù)模型

動(dòng)下手指往下??????點(diǎn)贊和留言支持下我持續(xù)寫(xiě)

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    五月综合激情婷婷丁香| 午夜久久久精品国产精品| 又色又爽又无遮挡的视频| 日韩中文字幕在线不卡一区| 粉嫩内射av一区二区| 熟女白浆精品一区二区| 好吊妞在线免费观看视频| 我想看亚洲一级黄色录像| 亚洲一区二区三区国产| 中日韩美女黄色一级片 | 日韩欧美中文字幕人妻| 久久精品国产在热亚洲| 亚洲熟妇中文字幕五十路| 人妻久久这里只有精品| 日本女优一区二区三区免费| 青青操日老女人的穴穴| 国产欧美一区二区久久| 久热这里只有精品九九| 国产在线一区二区三区不卡| 国产午夜福利在线观看精品| 亚洲国产四季欧美一区| 色鬼综合久久鬼色88| 日本高清一道一二三区四五区| 欧美一区二区黑人在线| 高清亚洲精品中文字幕乱码| 国产在线一区中文字幕| 国产一区在线免费国产一区| 国产盗摄精品一区二区视频| 欧美区一区二区在线观看| 在线日韩欧美国产自拍| 久久精品久久精品中文字幕| 噜噜中文字幕一区二区| 国产小青蛙全集免费看| 午夜久久精品福利视频| 日本大学生精油按摩在线观看| 91久久精品国产一区蜜臀| 国产一级不卡视频在线观看| 天堂网中文字幕在线视频| 有坂深雪中文字幕亚洲中文| 成年男女午夜久久久精品| 青青草草免费在线视频|