【Flask】创建一个蓝图

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 【Flask】创建一个蓝图,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

蓝图

在一个Flask 应用项目中,如果业务视图过多,可否将以某种方式划分出的业务单元单独维护,将每个单元用到的视图、静态文件、模板文件等独立分开

例如从业务角度上,可将整个应用划分为用户模块单元、商品模块单元、订单模块单元,如何分别开发这些不同单元,并最终整合到一个项目应用中?

一、蓝图介绍

在Flask中,使用蓝图Blueprint来分模块组织管理。
蓝图实际可以理解为是一个存储一组视图方法的容器对象,其具有如下特点:

  • 一个应用可以具有多个Blueprint
  • 可以将一个Blueprint注册到任何一个未使用的URL下比如 “/user”、“/goods”
  • Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的
  • 在一个应用初始化时,就应该要注册需要使用的Blueprint

二、使用步骤

1、单个文件的蓝图

使用蓝图可以分为三个步骤

  1. 创建一个蓝图对象
login_bp=Blueprint('register',__name__)
  1. 在这个蓝图对象上进行操作,注册路由,指定静态文件夹,注册模版过滤器
@login_bp.route('/')
def login():
    return render_template('static/guojia.jpg')
  1. 在应用对象上注册这个蓝图对象
    特别注意1:在应用中注册蓝图时使用url_prefix参数指定
app.register_blueprint(login_bp,url_prefix='/register')

在这里插入图片描述

2、独立模块的蓝图(用的最多)

在这里插入图片描述

特别注意2:创建蓝图的代码,放到__init__文件中

创建蓝图代码块(__init__文件)

特别注意3:第六行代码一定要写from register.register import register

为什么呢?

执行项目python app.py,先执行app.py文件中第13行注册蓝图,遇到名称为register_bp的蓝图,随后代码去__init__文件中找到该蓝图第4行,但是操作蓝图的视图加载不出来,所以程序会报错。所以要在__init__文件中,创建完蓝图之后,导入蓝图视图模块

from flask import Flask,Blueprint

#创建蓝图,对应的register目录
register_bp=Blueprint('register',__name__)

from register.register import register

操作蓝图代码块(register.py)

from flask import Flask,Blueprint
from register import register_bp

#蓝图上操作,注册路由
@register_bp.route('/')
def register():
    return "注册页面"

注册蓝图代码块(app.py)

from flask import Flask
from users import *
from order.order_func import *
from login import login_bp
from register import register_bp
app = Flask(__name__)

#注册蓝图
app.register_blueprint(user_bp,url_prefix='/users')


#在应用对象上注册蓝图
app.register_blueprint(register_bp,url_prefix='/register')


@app.route('/')
def hello_world():
    return 'Hello World!'


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

3、蓝图中的静态资源和模板

和应用对象不同,蓝图对象创建时不会默认注册静态目录的路由。需要我们在 创建时指定 static_folder 参数。
例如

register_bp=Blueprint('register',__name__,static_folder='static',template_folder='templates')

案例:

创建蓝图代码块

from flask import Flask,Blueprint

#创建蓝图,对应的register目录
register_bp=Blueprint('register',__name__,static_folder='static',template_folder='templates')

from register.register import register

定义蓝图视图代码块

from flask import Flask,Blueprint
from register import register_bp

#蓝图上操作,注册路由
@register_bp.route('/')
def register():
    return "注册页面"

注册蓝图代码块

from flask import Flask
from users import *
from order.order_func import *
from login import login_bp
#from register.register import register_bp
from register import register_bp

app = Flask(__name__)

#在应用对象上注册蓝图
app.register_blueprint(login_bp,url_prefix='/login')

#在应用对象上注册蓝图
app.register_blueprint(register_bp,url_prefix='/register')


@app.route('/')
def hello_world():
    return 'Hello World!'


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

启动项目,访问静态文件

在这里插入图片描述

附目录结构

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123406.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!