最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)的評論 (共 條)

分享到微博請遵守國家法律
顺昌县| 城市| 吴桥县| 海南省| 兖州市| 黑水县| 铅山县| 大姚县| 昆山市| 枞阳县| 博客| 奉节县| 游戏| 柳江县| 东兰县| 宝丰县| 永福县| 宾阳县| 静海县| 灵丘县| 谢通门县| 峨眉山市| 靖安县| 东丰县| 洞口县| 交口县| 福州市| 邢台市| 电白县| 大余县| 饶河县| 昭通市| 博爱县| 库车县| 日土县| 靖安县| 四会市| 延川县| 黄陵县| 井研县| 延安市|