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

在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. PLSQL基础学习-文字

    --oracle 练习: /********************PL/SQL编程基础*******************************/ --firstday -->>&g ...

  2. 简单的异步函数async/await例子

    function resolveAfter2Seconds(x){ return new Promise(resolve => { setTimeout(() => { resolve(x ...

  3. PHP校验日期格式是否合法

    在后端开发中,我们常常需要校验前端传入参数的合法性,如果是校验日期参数,我们可以通过下面的方法来校验: /** * 校验日期格式是否合法 * @param string $date * @param ...

  4. 第二十九节:Java基础知识-类,多态,Object,数组和字符串

    前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...

  5. markdown上下左右,跳至行尾行首,重设快捷键

    概述 用markdown输入代码的时候觉得下面2件事非常不方便: (1)光标上下左右.(需要挪动手去按方向键) (2)光标跳至行尾和行首.(需要动手去按Home和End键) 为了简化,我特地更改了ST ...

  6. linux 软件安装篇

    在linux下安装软件,不像windows一样,下一步下一步安装,但是也有很方便的方式.也有自定义的安装方式,总体来说,套路还不算太深,但是要实践才能出真知哦! linux版本有很多,但是大部分命令都 ...

  7. 第二篇:服务消费者(RestTemplate+ribbon)

    第一篇讲了服务的注册,这篇来说说服务的调用,服务与服务的通讯是基于http restful,springcloud的服务调用是通过ribbon方式的,客户端的负载均衡. Talk is cheap.S ...

  8. vertical-align  css属性

    vertical-align 属性设置元素的垂直对齐方式. vertical-align 的属性值: baseline:默认.元素放置在父元素的基线上. sub:垂直对齐文本的下标. super:垂直 ...

  9. Java NIO中的通道Channel(一)通道基础

    什么是通道Channel 这个说实话挺难定义的,有点抽象,不过我们可以根据它的用途来理解: 通道主要用于传输数据,从缓冲区的一侧传到另一侧的实体(如文件.套接字...),反之亦然: 通道是访问IO服务 ...

  10. 关于dao层的封装和前端分页的结合(文章有点长,耐心点哦)

    任何一个封装讲究的是,实用,多状态.Action:     任何一个Action继承分页有关参数类PageManage,自然考虑的到分页效果,我们必须定义下几个分页的参数.并根据这个参数进行查值. 然 ...