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

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

分享到微博請遵守國家法律
根河市| 平果县| 龙南县| 固安县| 建德市| 红安县| 钟山县| 苍溪县| 舞钢市| 耒阳市| 万州区| 新津县| 石渠县| 宾川县| 思茅市| 凌云县| 华阴市| 弥渡县| 文昌市| 肥城市| 宁海县| 万荣县| 朝阳县| 屏东县| 洛南县| 电白县| 罗源县| 雷州市| 乐平市| 二手房| 临潭县| 开平市| 宁乡县| 凉城县| 名山县| 建瓯市| 离岛区| 昌邑市| 莎车县| 宜春市| 那曲县|