flask之Blueprint

一、基本概念

蓝图将不同的功能放到不同的模块中,以实现程序功能的模块化。其本质上来说就是让程序更加松耦合,更加灵活,增加复用性。

一个项目可以有多个蓝图。

优点:

1、工程结构更加清晰,便于开发和维护
2、降低了代码的耦合,代码更加健壮。

二、使用步骤

1、导入蓝图库类(位置:视图函数文件)

from flask import Blueprint
#重要:注意导入的方法名为Blueprint,不是blueprints,虽然import无异常

2、创建(实例化)蓝图对象(位置:视图函数文件)

us=Blueprint('user',__name__)
#两个必要参数':第一个参数:蓝图名字,自定义,随意;' 第二个参数:__name__'蓝图所在的模块或者包,一般为'__name__'变量

3、使用蓝图对象进行路由操作(位置:视图函数文件)

@us.route('/account')
def user_profile():
	return 'user_profile'   #返回字符串return render_template('hello.html')  #返回渲染的HTML页面

4、注册蓝图(位置:项目初始化__init__文件)

注册蓝图:将对应模块下的蓝图对象注册到app中

from flask import Flask
app = Flask(__name__)

from .modelViews001.user import us #引入视图中创建的蓝图对象   .表示当前文件所在目录层级

app.register_blueprint(us)  #注册蓝图

三、蓝图参数:url_prefix(非必填),用来调整url地址

当需要用到的时候,一般在蓝图对象定义时添加,为当前蓝图下所有视图函数添加统一的前缀,这样不同蓝图下的视图函数url就不易发生重复;如

xxx = Blueprint(‘account’, name,url_prefix=‘/xxx’)

在创建蓝图实例化对象时候,如果加上参数url_prefix=‘/xxx’,表示在该蓝图下,所有的url地址访问路径中都要加上xxx路径,即域名/xxx/路由

如:

# 导入蓝图
from flask import Blueprint
 
blueprint = Blueprint('news', __name__, url_prefix="/news")
 
# 用蓝图注册路由
@blueprint.route("/society")
def society_news():
    return "aaaa"
 
 
@blueprint.route("/tech")
def tech_news():
    return "bbbb"

因为蓝图的url_prefix设置为news,页面访问的路径是 http://域名/news/society 和http://域名/news/tech

完整demo如下:

from flask import Flask, render_template,Blueprint



#form = Blueprint('formDis', __name__)
form = Blueprint('formDis111', __name__, url_prefix="/news")

#实例化蓝图对象
#两个必要参数':
# 第一个参数:蓝图名字,自定义'
# 第二个参数:__name__'蓝图所在的模块或者包,一般为'__name__'变量;
# 第三个参数:url_prefix,非必填,,表示在该蓝图下,所有的url地址访问路径中都要加上xxx路径,即域名/xxx/路由

@form.route('/formplay')  #在蓝图对象上进行操作,路由
def index():
    # 往模板中传入的数据
    my_str11 = 'Hello Word22'
    my_int = 10
    my_array = [3, 4, 2, 1, 7, 9]
    my_dict = {
        'name': 'xiaoming',
        'age': 18
    }
    return render_template('hello.html',
                           my_str22=my_str11,
                           my_int=my_int,
                           my_array=my_array,
                           my_dict=my_dict
                           )

四、注意事项

1、一个app下的蓝图对象不可重名

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值