欢迎访问空指针网站

Flask框架从入门到精通之蓝图(二十四)

Flask 小源 2年前 (2019-04-27) 1588次浏览 0个评论
知识点: 1、蓝图

一、概况

从前面的知识点能看出来,我们所有的视图函数都写在了一个文件当中,当我们的业务越来复杂的时候。视图函数也会变得越来越多,导致阅读不方便,维护起来困难等难题。比如下面这样:

from flask import Flask
from flask_script import Manager

app = Flask(__name__)

@app.route('/')
def index():
    return 'index page'

# home视图
@app.route('/home')
def home():
    return 'home page'

# center视图
@app.route('/center')
def center():
    return 'center page'

# order视图
@app.route('/order')
def order():
    return 'order page'

# cart视图
@app.route('/cart')
def cart():
    return 'cart page'

if __name__ == '__main__':
    # 0.0.0.0代表任何能代表这台机器的地址都可以访问
    app.run(host='0.0.0.0', port=5000, debug=True)  # 运行程序

能看出来,当我们业务有新的需求的时候,我们还会往这个里面添加视图函数。

二、使用装饰器解决

例如我们把上面的home视图抽出来,放到单独的一个home.py文件中。在此文件只写一个没有被装饰器装饰的视图函数。

def home():
    return 'home page'

然后在Flask的启动程序文件中,把home视图在重新用装饰器装饰起来。

from flask import Flask
from home import home

app = Flask(__name__)

# 装饰home视图
app.route('/home')(home)

@app.route('/')
def index():
    return 'index page'

if __name__ == '__main__':
    # 0.0.0.0代表任何能代表这台机器的地址都可以访问
    app.run(host='0.0.0.0', port=5000, debug=True)  # 运行程序

我们在浏览器调试一下:

在这里插入图片描述

可以发现,这样完全是可以的。其他的功能视图也可以这么做。但是这么做有个缺点,就是我们去单独home.py看的时候,根本不知道这个视图函数对应的路径是什么?如果想知道,我们必须要去Flask启动文件中去查看。

三、蓝图

  • 什么是蓝图 Flask中的蓝图有点像Django框架的app的意思。就是把一个项目模块化,每个模块所用的视图、静态文件、模板放在一个盒子里。
  • 使用蓝图 在使用蓝图之前,我们需要先创建蓝图,继续那我们上面的home视图函数举例,把home.py文件里面的代码修改如下:

from flask import Blueprint

# app_home值蓝图的名称,
# __name__指蓝图所在模块
app_home = Blueprint('app_home', __name__)

# 注册蓝图路由
@app_home.route('/home')
def home():
    return 'home page'

Flask的启动程序文件中,导入蓝图并注册蓝图:


极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Flask框架从入门到精通之蓝图(二十四)
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址