Flask10——蓝图

截止目前为止,我们所写的所有视图函数都放在一个文件当中,对于我们开发一个非常小的应用的话,还勉强可以接受,但是在我们真正的开发中,我们可能会需要开发前台应用,后台应用,我们也可能需要操作不同的表,那么,为了便于日后的维护,一般我们会根据不同的功能模块,将文件按功能模块,或者按操作的表的不同来拆分我们的文件到不同的文件当中。下面就仿照真实的开发需求,来模拟一下我们需要解决的问题,已经需要怎么解决。
比如我们要开发一个博客系统,那么一般会分为前台和后台,前台包括:首页、列表页面,详情页面。后台则包括所有文章列表页面,添加文章页面,修改文章页面。那么我们就需要创建以下视图函数:

# app.py文件 

from flask import Flask

app = Flask(__name__)

# 前台首页
@app.route('/')
def index():
    return 'index'

# 前台列表页面
@app.route('/list')
def list():
    return 'list'

# 前台详情页面
@app.route('/detail')
def detail():
    return 'detail'


# 后台所有文章页面
@app.route('/all')
def all():
    return 'add'

# 后台添加文章页面
@app.route('/add')
def add():
    return 'add'


# 后台编辑文章页面
@app.route('/edit')
def edit():
    return 'edit'


if __name__ == '__main__':
    app.run()

这就是我们按照之前的思路的一般写法,我们现在看到的只是这几个视图函数,数量还很有限,但是真正开发的时候可不只有这几个视图函数,如果有较多视图函数的话,我们就需要考虑将此文件进行拆分了。比如我们可以将后台的相关试图函数给移到新文件admin.py当中。

# app.py文件 

from flask import Flask

app = Flask(__name__)

# 前台首页
@app.route('/')
def index():
    return 'index'

# 前台列表页面
@app.route('/list')
def list():
    return 'list'

# 前台详情页面
@app.route('/detail')
def detail():
    return 'detail'

if __name__ == '__main__':
    app.run()
# admin.py文件 

# 后台所有文章页面
@app.route('/all')
def all():
    return 'add'

# 后台添加文章页面
@app.route('/add')
def add():
    return 'add'


# 后台编辑文章页面
@app.route('/edit')
def edit():
    return 'edit'

但是这样拆分之后,我们发现又有新的问题了。在admin.py文件当中并没有app,从而导致代码报错。就算我们将app从app.py文件中引入到admin.py中,我们发现启动后,还是依然找不到我们后台的视图函数。
那么要解决这个问题,就需要我们今天要讲的蓝图了,为了大家的理解,我姑且把蓝图比作插座,我们接下来需要把admin.py当中的三个视图函数插到一个负责后台模块的插座上。具体的代码实现,需要我们引入一下蓝图,然后进行实例化,实例化蓝图后的对象为:admin_blue,然后,这个时候就需要将admin.py当中的三个视图函数挂到这个实例化后的蓝图对象admin_blue上了。

from flask import Blueprint

admin_blue = Blueprint('admin', __name__)


@admin_blue.route('/add')
def add():
    return 'add'


@admin_blue.route('/delete')
def delete():
    return 'delete'


@admin_blue.route('/edit')
def edit():
    return 'edit'

我们刚才说了,我们把蓝图比作成插座,那么到此为止,我们已经算是把后台的视图函数挂载到了后台的这个插座上,我们接着还需要将这个后台的插座链接到我们的总开关app上,所以,在app.py文件中,我们就需要首先引入一下后台的蓝图,然后再注册到主app上,这样才算将我们的视图函数通过插座联到了我们的主开关上,我们的后台的视图函数才能正常的访问了。代码如下:

from admin import admin_blue  # 引入蓝图


app = Flask(__name__)

app.register_blueprint(admin_blue)  # 注册蓝图

这样,当服务启动之后,我们就可以通过 http://127.0.0.1:5000/add 来访问后台的视图函数了。
这就是我们最简单的通过蓝图来按功能模块拆分文件的方法。也就是蓝图的使用方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值