Flask学习总结笔记(7) -- 程序文件组织结构

前面在Flask学习中我们采用了一种简单的文件夹组织形式。但是对于大型程序而言,将所有的代码放在一起不是一种明智的选择。Flask提供了一种蓝本(Blueprint)的程序组织方式,可以对大型程序进行模块化的分割,使得代码扩展性和可读性大为提高。

0x01 文件结构

上面定义了2个蓝本模块,分别是main和info。下面以main为例子进行说明。

0x02创建蓝本

文件app/main/__init__.py添加定义:

from flask import Blueprint

main=Blueprint('admin',__name__)

from . import views,errors

通过实例化Blueprint类的对象可以创建一个蓝本。程序的路由信息保存在app/main/views.py中,错误处理信息保存在app/main/errors.py中。

(1)app/main/views.py

from . import main
from flask import render_template

@main.route('/test/')
def test():
    return render_template('main/test.html'),200

(2)app/main/errors.py

from flask import render_template
from app.main import main

@main.app_errorhandler(404)
def page_not_found(e):
    return render_template('main/404.html'),404

@main.app_errorhandler(500)
def internal_server_error(e):
    return render_template('main/500.html'),500

上面使用的是app_errorhandler,与前面使用的errorhandler修饰器稍有不同。

0x03注册蓝本

app/__init__.py中添加注册蓝本的代码:

#导入蓝本
from app.main import main
app.register_blueprint(main,url_prefix='/admin')

0x04构造url

在蓝本模式下,url_for函数的用法稍有不同。url_for定位参数需要带上蓝本名称:

url_for('main.test')

0x05后记

其他部分的文件含义就不赘述了,与以前讲解的Flask内容类似。使用Blueprint蓝本模式,是Flask构建大型程序的基础,有必要熟练掌握其中的用法。需要强调一点的是,使用蓝本模式容易造成import循环导入模块的问题,大家可以在使用过程中加以总结,如果有需要,可以留言大家一起讨论交流。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值