知识点: 一、蓝图html
从前面的知识点能看出来,咱们全部的视图函数都写在了一个文件当中,当咱们的业务越来复杂的时候。视图函数也会变得愈来愈多,致使阅读不方便,维护起来困难等难题。好比下面这样:python
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) # 运行程序
复制代码
能看出来,当咱们业务有新的需求的时候,咱们还会往这个里面添加视图函数。flask
例如咱们把上面的home视图抽出来,放到单独的一个home.py文件中。在此文件只写一个没有被装饰器装饰的视图函数。浏览器
def home():
return 'home page'
复制代码
而后在Flask的启动程序文件中,把home视图在从新用装饰器装饰起来。app
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) # 运行程序
复制代码
咱们在浏览器调试一下: 框架
什么是蓝图 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的启动程序文件中,导入蓝图并注册蓝图:网站
from flask import Flask
#导入蓝图
from home import app_home
app = Flask(__name__)
# 注册蓝图
app.register_blueprint(app_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) # 运行程序
复制代码
咱们在浏览器调试一下: url
app.register_blueprint(app_home, url_prefix='/user')
复制代码
咱们在浏览器调试一下:
咱们还能够把Flask中的蓝图用python中包的概念管理起来。仍是上面的例子,咱们建立一个home文件夹(包):
from flask import Blueprint
# app_home值蓝图的名称,
# __name__指蓝图所在模块
app_home = Blueprint('app_home', __name__)
from .views import home
复制代码
在views.py文件中注册蓝图路由:
from . import app_home
# 注册蓝图路由
@app_home.route('/home')
def home():
return 'home page'
复制代码
在Flask启动文件导入蓝图:
from flask import Flask
# 导入蓝图
from home import app_home
app = Flask(__name__)
# 注册蓝图
app.register_blueprint(app_home, url_prefix='/user')
@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) # 运行程序
复制代码
咱们在浏览器调试一下:
from . import app_home
from flask import render_template
# 注册蓝图路由
@app_home.route('/home')
def home():
return render_template('home.html')
复制代码
咱们在浏览器调试一下:
欢迎关注个人公众号: