我們還需要考慮一件事情,在我們環境我們一般有三個環境,一般都是測試環境,開發環境,生產環境
這三個環境我們在config裡面設定。因為抽取了就應該在固定的位置編寫
我們class乙個數我這邊定義development,把配置環境config交到裡面,現在還不知道怎麼寫我們就pass停止,後面的測試和生產乙個道理
class developmentconfig(config):#開發環境
pass
class productionconfig(config):#生產環境
pass
class testconfig(config):這樣我們的三個環境就成了,成了後我們就完成基本的配置,一般來說我們的開發環境,和我們當前的config配置是一樣的,所以我們在後生產環境後面寫pass就不做修改。而生產環境不一樣,我們把debug稍微的修改一下。#測試環境
pass
class productionconfig(config):還有一般我們開發和生產的資料庫也需要修改,因為你做開發的時候肯定會做增刪改查的乙個工作等,所以我們不能操作線上的真實的資料庫。所以我們會專門給乙個測試資料庫。#生產環境
debug = false #這裡表示我們不開啟debug
class productionconfig(config):這裡我們就寫乙個demo代表生產資料庫,現在我們基本的就配置完成。#生產debug = false
sqlalchemy_database_uri = "mysql:"
我們把這行**注釋
from config import config重新匯入三個環境
from config import developmentconfig,productionconfig,testconfig如果是生產環境,三個地方要做修改#分別是開發,生產,測試
變成redis_store = strictredis(host=developmentconfig.redis_host, port=developmentconfig.redis_post)
如果是測試環境或者開發環境還是一樣,但是這樣的不好用,改的太多太多了。
所以我我們建立乙個函式來接收乙個引數。
完整**引數"
):)redis_store = strictredis(host=developmentconfig.redis_host, port=developmentconfig.redis_post)
#設定redis的存放資料庫
開始csrf保護開啟
完整改動**
我們來到mange,如果我們做了這件事情
# manager.add_command("mysql",migratecommand)#建立mysql的指令碼命令
# manager.add_command("mysql",migratecommand)#建立mysql的指令碼命令
configs=現在我們在字典裡完成乙個鍵乙個值,我們用字典把三個值分別放到字典裡三個值裡面。來到__init__.py裡面我們兩行**就不要了
# from config import config不要了,直接刪除。from config import developmentconfig,productionconfig,testconfig
我們直接把字典導進來
from config import configs來到manage,
dev引數一半過去後,來到__init__.py裡面,拿env接收
然後把這三個地方全部修改成configs[env]
我們執行後會發現報錯
再次執行我們就會執行成功
下面對比一下**,分別是__init__.py,manage,config.
from flask importconfigflask,session
from flask_sqlalchemy import
sqlalchemy
from redis import
strictredis
from flask_session import
session
from flask_wtf import
csrfprotect
from config import
configs
#def
) redis_store = strictredis(host=configs[env].redis_host, port=configs[env].redis_post)
#設定redis的存放資料庫
開始csrf保護開啟
manage
from flask_script import
manager
from flask_migrate import
migrate,migratecommand
#from info import
dev"
)建立指令碼管理者
#manager.add_command("
mysql
",migratecommand)#
建立mysql的指令碼命令/"
)def
index():
#redis_store.set("name","laoli")
#測試session
#session["age"]=28
return
"hello"if
__name__=="
__main__":
manager.run()
#配置類from redis import
strictredis
class
config:
debug =true
sqlalchemy_database_uri="
mysql:
"sqlalchemy_track_modifications=false
redis_host = "
127.0.0.1
"redis_post = 6379secret_key ="
asdsadsada
"session_type = "
redis"#
指定用redis來儲存session資訊
session_redis = strictredis(host=redis_host, port=redis_post)#
指定那個redis來儲存session資訊
session_use_signer= true #
設定是否使用秘鑰
session_permanent=60*60*24 #
設定cession的儲存時間
class
developmentconfig(config):
#開發環境
pass
class
productionconfig(config):
#生產環境
debug =false
sqlalchemy_database_uri = "
mysql:
"class
testconfig(config):
#測試環境
pass
configs=
Factory Method工廠方法 建立型模式
factory method 工廠方法 從耦合關係談起 耦合關係直接決定著軟體面對變化時的行為 模組與模組之間的緊耦合使得軟體面對變化時,相關的模組都要隨之更改 模組與模組之間的松耦合使得軟體面對變化時,一些模組更容易被替換或者更改,但其他模組保持不變 軟體需求的變化不應該是工程師抱怨的問題,而應該...
建立型模式 工廠方法
概述 定義乙個用於建立物件的介面,讓子類決定例項化哪一類。factorymethod使乙個類例項化延遲到其子類。適用性 當乙個類不知道它所必須建立的物件的類的時候。當乙個類希望由它的子類來指定它所建立的物件的時候。當類建立物件的職責委託給多個幫助子類中的某乙個,並且你希望將哪乙個幫助子類是 者這一資...
建立型 工廠方法模式
抽象產品 定義產品的介面,產品物件的公共父類 具體產品 實現產品的介面 抽象工廠 宣告工廠方法,返回乙個產品 具體工廠 抽象工廠的子類,客戶端呼叫,返回乙個具體的例項 需求 日誌記錄器可以通過很多途徑儲存日誌,使用者可以修改配置檔案,靈活的更換日誌記錄的方式,為了更好的封裝記錄器的初始化過程,並保證...