Flask——蓝图

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

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中,我们发现启动后,还是依然找不到我们后台的视图函数。

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) # 注册蓝图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值