Flask 中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西
在Flask中的蓝图 blueprint 也是非常宏伟的
它的作用就是将 功能 与 主服务 分开
怎么理解呢?
比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将查看客户,修改客户,添加客户,删除客户的四个功能做成蓝图加入到客户管理系统中,本篇最后会做一个这样的例子,但是首先我们要搞清楚什么是蓝图 blueprint
蓝图结构:
其实我们可以理解成一个没有run方法的Flask对象,这个理论虽然有很多的漏洞,但是对于刚接触蓝图的你来说,就这么样理解,没有错
下面来看一下,在实例化蓝图的时候可以传递的参数都有什么,你就能完全理解了

如图,这就是我们建立好的一个目录结构,一层一层的看一下,首先是app目录,它就是我们的主应用程序目录了
在这里面有一个__init__.py这个文件里面的内容如下
from flask import Flask from .views.add_user import add_bp
from .views.del_user import del_bp
from .views.edit_user import edit_bp
from .views.get_user import get_bp def create_app():
app = Flask(__name__, template_folder='templates_all', ) app.register_blueprint(add_bp)
app.register_blueprint(del_bp)
app.register_blueprint(edit_bp)
app.register_blueprint(get_bp) return app
由此见得__init__.py就是构建app的一个函数,并且将views中的似乎是蓝图的东西注册进去了
接下来看static目录,这个目录从字面意思就可以理解了,就是我们的static静态文件存放目录了
然后就是templates目录,模板存放目录
views中的内容:
from flask import Blueprint, render_template, redirect, request
from S import STUDENT_LIST as S
get_bp = Blueprint('get_bp', __name__)
# 展示页面
@get_bp.route('/show')
def get_user():
path = request.host_url + 'add' # 添加
return render_template('show_page.html', S=S, path=path)
get_user
from flask import Blueprint, render_template, redirect, request
from S import STUDENT_LIST as S
add_bp = Blueprint('add_bp', __name__)
# 添加用户页面
@add_bp.route('/add', methods=['GET', 'POST'])
def add_user():
if request.method == 'POST':
username = request.form.get('username')
age = request.form.get('age')
gender = request.form.get('gender')
user_info = {'name': username, 'age': age, 'gender': gender}
S.append(user_info)
return redirect('/show')
return render_template('add_user.html')
add_user
from flask import Blueprint, render_template, redirect, request
from S import STUDENT_LIST as S
del_bp = Blueprint('del_bp', __name__)
# 删除用户页面
@del_bp.route('/del')
def del_user():
id = request.args['id']
print(id)
S.pop(int(id) - 1)
return redirect('/show')
del_user
from flask import Blueprint, render_template, redirect, request
from S import STUDENT_LIST as S
edit_bp = Blueprint('edit_bp', __name__)
# 编辑用户页面
@edit_bp.route('/edit', methods=['GET', 'POST'])
def edit_user():
id = int(request.args['id']) - 1
edit_info = S[id]
print(edit_info)
if request.method == 'POST':
username = request.form.get('username')
age = request.form.get('age')
gender = request.form.get('gender')
user_info = {'name': username, 'age': age, 'gender': gender}
S[id] = user_info
return redirect('/show')
return render_template('add_edit.html', S=edit_info)
edit_user
manager.py 文件中的内容
# # 导入此前写好的蓝图模块
from app01_add import create_app
my_app01 = create_app() if __name__ == '__main__':
my_app01.run(debug=True,port='')
运行manage.py文件就好啦
Flask 中的蓝图(BluePrint)的更多相关文章
- 第九篇 Flask 中的蓝图(BluePrint)
第九篇 Flask 中的蓝图(BluePrint) 蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? ...
- Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...
- 9,Flask 中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西,在Flask中的蓝图 blueprint 也是非常宏伟的,它的作用就是将 功能 与 主服务 分开. 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的 ...
- flask中的蓝图 Blueprint
模块化 随着flask程序越来越复杂,我们需要对程序进行模块化的处理,之前学习过python的模块化管理,于是针对一个简单的flask程序进行模块化处理 简单来说,Blueprint 是一个存储操作方 ...
- Flask中的蓝图(BluePrint)、
蓝图 1.初识Flask蓝图(BluePrint) 创建一个项目然后将目录结构做成: user.py中的内容 from flask import Blueprint, render_template ...
- flask中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...
- python 全栈开发,Day120(路由系统, 实例化Flask的参数, 蓝图(BluePrint), before_request after_request)
昨日内容回顾 1.Flask: from flask import Flask app = Flask(__name__) # 从源码中可以看出,Flask集成的run方法是由werkzeug中的ru ...
- flask 第九篇 蓝图 Blueprint
蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...
- Flask 中的蓝图
相当与django中的App 基础模板 1.初识Flask蓝图(blueprint) 创建一个项目然后将目录结构做成: s_view.py 文件中的内容 from flask import Blu ...
随机推荐
- 背水一战 Windows 10 (79) - 自定义控件: Layout 系统, 控件模板, 事件处理
[源码下载] 背水一战 Windows 10 (79) - 自定义控件: Layout 系统, 控件模板, 事件处理 作者:webabcd 介绍背水一战 Windows 10 之 控件(自定义控件) ...
- HttpClient Fluent API 高并发优化
apache的httpcomponents-client 4.2之后提供了一套易于使用的facade API称为Fluent API,对于一般使用场景来说,使用起来非常简便,且性能也有一定保证,因为其 ...
- JS应用实例1:注册页面表单校验
这里是简单的前端校验,后边还会介绍后台的校验. 多重校验保证获取安全数据 步骤: 1.确定事件onsubmit,并绑定函数 2.编写函数,作用是获取输入数据 3.判断数据是否合法,合法则提交,否则表单 ...
- 【转载】MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
[原文链接]:MyBatis JdbcType 与Oracle.MySql数据类型对应关系详解 1. Mybatis JdbcType与Oracle.MySql数据类型对应列表 2. Mybatis ...
- 深度学习笔记(七)SSD 论文阅读笔记
一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...
- String-intern方法举例分析其含义
之后重新理解这个知识点时,又写了一些小例子 String a1 = new String("str01") ; String a2 = "str01" ; Sy ...
- 【Object类、常用API】
Object类 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类 ...
- 21天打造分布式爬虫-requests库(二)
2.1.get请求 简单使用 import requests response = requests.get("https://www.baidu.com/") #text返回的是 ...
- 高手速成android开源项目【tool篇】
主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...
- 从零开始学 Web 之 BOM(二)定时器
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...