蓝图,听起来就是一个很宏伟的东西

在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)的更多相关文章

  1. 第九篇 Flask 中的蓝图(BluePrint)

    第九篇 Flask 中的蓝图(BluePrint)   蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? ...

  2. Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)

    蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...

  3. 9,Flask 中的蓝图(BluePrint)

    蓝图,听起来就是一个很宏伟的东西,在Flask中的蓝图 blueprint 也是非常宏伟的,它的作用就是将 功能 与 主服务 分开. 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的 ...

  4. flask中的蓝图 Blueprint

    模块化 随着flask程序越来越复杂,我们需要对程序进行模块化的处理,之前学习过python的模块化管理,于是针对一个简单的flask程序进行模块化处理 简单来说,Blueprint 是一个存储操作方 ...

  5. Flask中的蓝图(BluePrint)、

    蓝图 1.初识Flask蓝图(BluePrint) 创建一个项目然后将目录结构做成: user.py中的内容 from flask import Blueprint, render_template ...

  6. flask中的蓝图(BluePrint)

    蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...

  7. python 全栈开发,Day120(路由系统, 实例化Flask的参数, 蓝图(BluePrint), before_request after_request)

    昨日内容回顾 1.Flask: from flask import Flask app = Flask(__name__) # 从源码中可以看出,Flask集成的run方法是由werkzeug中的ru ...

  8. flask 第九篇 蓝图 Blueprint

    蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...

  9. Flask 中的蓝图

    相当与django中的App 基础模板 1.初识Flask蓝图(blueprint) 创建一个项目然后将目录结构做成: s_view.py 文件中的内容   from flask import Blu ...

随机推荐

  1. Python学习第2章

    1.字符串: python中创建字符串我们可以使用引号''或"'. python访问子字符串,可以使用方括号来截取字符串: var="hello world!" var2 ...

  2. Visual Studio中xml文件使用app.config、web.config等的智能提示的方法

    在.Net开发的过程中,有时我们需要使用Xml文件作为配置文件(基于某些情况的考虑),而不是app.config.web.config这种,但是我们在xml中配置时希望可以增加类似编辑app.conf ...

  3. 背水一战 Windows 10 (63) - 控件(WebView): 基础知识, 加载 html, http, https, ms-appx-web:///, embedded resource, ms-appdata:///, ms-local-stream://

    [源码下载] 背水一战 Windows 10 (63) - 控件(WebView): 基础知识, 加载 html, http, https, ms-appx-web:///, embedded res ...

  4. 牛客JS编程大题(一)

    1.找出元素 item 在给定数组 arr 中的位置 function indexOf(arr,item){ return arr.indexOf(item);} 2.计算给定数组 arr 中所有元素 ...

  5. Jmeter 结构、原理介绍 Jmeter结构、原理介绍(1)

    一.Jmeter 简介 1.是基于java语言的开源的应用软件. 2.可以进行接口测试.性能测试.接口及性能的自动化测试. 二.Jmeter体系结构 元件:可以理解为每一个菜单.如THHP请求.响应断 ...

  6. 了解Java基本数据类型的取值范围

    拿byte类型做栗子 一个字节是8位二进制数,然后最高位会用来作为符号位.正数计算机是存的原码,负数是存的补码. 也就说byte正数最大是0111 1111,转化为十进制是:127(这就是byte的上 ...

  7. Jenkins高危代码执行漏洞检测/开源漏洞靶场

    漏洞细节可以参看安全客的文章:https://bbs.ichunqiu.com/thread-22507-1-1.html Jenkins-CLI 反序列化代码执行(CVE-2017-1000353) ...

  8. Java 字符串类型常用方法

    常用方法 获取字符串长度 public int length() 字符串Unicode操作 这部分用的不多,不是很清楚,先记载在这. //获取指定索引处的元素对应的unciode编码 public i ...

  9. JavaScript获取键盘事件

    JavaScript中: onkeydown 事件会在用户按下一个键盘按键时发生. onkeypress 事件会在键盘按键被按下并释放一个键时发生. onkeyup 事件会在键盘按键被松开时发生. 支 ...

  10. Shell - 简明Shell入门14 - 操作符(Operator)

    示例脚本及注释 #!/bin/bash echo "No code, just some comments." # ### 通配符 # * 代表任意(0个或多个)字符 # ? 代表 ...