国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

利用Python Flask藍(lán)圖加自定義藍(lán)圖劃分優(yōu)雅的目錄結(jié)構(gòu)

2023-03-07 17:23 作者:IFELES  | 我要投稿

我們在用Flask開發(fā)網(wǎng)站的時候。經(jīng)??吹接泻芏嗳税阉械穆酚珊瘮?shù)放到了入口文件,這種做法是非常不可取的,如果我們的視圖函數(shù)有幾百個了都寫到一個文件里肯定是不行的。還有在實現(xiàn)中我們都在比較大型項目里面我們可能有十幾個甚至幾十個這種不同模型。我們需要考慮把這些模型分文別類歸屬到不同的文件中去。而不是都集中在同一個文件中。如下圖這種:


是不是很亂,那么我們怎么拆分這些函數(shù)了。接下來我們就來簡單實現(xiàn)一下:


一、 規(guī)劃目錄結(jié)構(gòu)


二、新建app包構(gòu)造核心目錄

api/v1/init.py 接口目錄為版本號模塊初始化文件
api/v1/user.py 接口目錄為版本號加上模塊名稱文件
config/settings.py 包為配置文件
lib/redprint.py核心類文件模仿藍(lán)圖重寫
app.py?核心入口文件
當(dāng)然還有其他包比如model為數(shù)據(jù)庫validate為驗證等等就不在列舉

  1. api/v1/init.py 用藍(lán)圖托管版本號導(dǎo)入不同模塊

    from?flask?import?Blueprint
    from?app.api.v1?import?user,?website
    def?create_blueprint_v1():
    ????bp_v1?=?Blueprint('v1',?__name__)
    ????user.api.register(bp_v1)
    ????website.api.register(bp_v1)
    ????return?bp_v1
  2. api/v1/user.py 用lib下自定義redprint托管模塊

    from?app.lib.redprint?import?Redprint
    api?=?Redprint('user')
    
    @api.route('/get')
    def?get_user():
    ????return?'get'
    
    @api.route('/create')
    def?create_user():
    ????return?'create'
  3. settings.py?一些數(shù)據(jù)庫等配置信息

    TOKEN_EXPIRATION?=?30?*?24?*?3600
    SQLALCHEMY_DATABASE_URI?=?\
    ????'mysql+cymysql://root:123456@localhost/test'
    SECRET_KEY?=?'test'
  4. redprint.py模仿藍(lán)圖重寫register和route方法

    class?Redprint(object):
    ????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):
    ????????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)
  5. app.py?核心入口文件

    from?flask?import?Flask
    
    
    def?register_blueprints(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.settings')
    ????register_blueprints(app)
    ????return?app


三、main.py入口文件


from?app.app?import?create_app

app?=?create_app()

if?__name__?==?'__main__':
????app.run(debug=True,?host='0.0.0.0',?port=5001)

測試看一下效果:


利用Python Flask藍(lán)圖加自定義藍(lán)圖劃分優(yōu)雅的目錄結(jié)構(gòu)的評論 (共 條)

分享到微博請遵守國家法律
大英县| 丰顺县| 济南市| 永嘉县| 自贡市| 莫力| 浪卡子县| 四会市| 吴江市| 九台市| 上蔡县| 樟树市| 海阳市| 瑞安市| 桓台县| 厦门市| 哈尔滨市| 伊吾县| 盐城市| 平遥县| 虞城县| 兴国县| 中山市| 卢湾区| 岫岩| 偏关县| 牙克石市| 嘉禾县| 宁南县| 元阳县| 迁西县| 寿阳县| 商都县| 子长县| 剑河县| 榕江县| 都兰县| 连江县| 运城市| 新丰县| 东方市|