在Flask中的蓝图 blueprint 的作用就是将 功能 与 主服务 分开

比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将

查看客户,修改客户,添加客户,删除客户   四个功能做成蓝图加入到客户管理系统中

初识蓝图

如何理解蓝图:其实我们可以理解成一个没有run方法和config配置的的Flask对象,这个理论虽然有很多的漏洞,但是对于刚接触蓝图来说,就这么样理解,没有错

1.在上一篇原基础上传建一个文件夹user_app项目, 文件夹结构如下

user_app中写入

from flask import Blueprint    # 导入 Flask 中的蓝图 Blueprint 模块
from flask import render_template user_blue = Blueprint("user", __name__, template_folder="user_temp", url_prefix="/user")
# 实例化一个蓝图(Blueprint)对象
# 模板文件放在user_temp文件夹下, url访问时候较多加一个前缀/user @user_blue.route('/user_list') # url访问 /user/user_list
def user_list():
return render_template("user_list.html")

app.py文件中注册一下

from users_app import user

app.register_blueprint(user.user_blue)  # 注册蓝图

user_lsit.html 中就写入了一个h1标签

<h1>这里是user_list页面</h1>

此时访问浏览器     路由是 /user/user_lsit

很明显,我们没有在Flask对象中添加路由,但是我们注册了有路由和视图函数的user_blue蓝图对象

总结

Blueprint 其实可以理解为一个了没有run方法的 Flask 对象

只要Blueprint被 Flask 注册了,就一定会生效

2.修改user.py,并在user_app目录下添加一张图片

from flask import Blueprint  # 导入 Flask 中的蓝图 Blueprint 模块
from flask import render_template, send_file user_blue = Blueprint("user", __name__, template_folder="user_temp", url_prefix="/user") # 实例化一个蓝图(Blueprint)对象
# 模板文件放在user_temp文件夹下, url访问时候较多加一个前缀/user @user_blue.route('/user_list') # url访问 /user/user_list
def user_list():
return render_template("user_list.html") @user_blue.route('/picture') # /user/picture
def picture():
return send_file("users_app\\111.jpg") # 图片路径

修改后的user.py

url中访问    /user/picture

从这个例子中我们总结出:

Blueprint 其实可以理解为一个了没有run方法的 Flask 对象

只要Blueprint被 Flask 注册了,就一定会生效

坑来了!坑来了!

蓝图内部的视图函数及route不要出现重复,否则~你们自己试试吧

蓝图简单应用

第九篇 蓝图 blueprint的更多相关文章

  1. flask 第九篇 蓝图 Blueprint

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

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

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

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

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

  4. Flask 中的蓝图(BluePrint)

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

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

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

  6. 5. 使用Flask蓝图(blueprint)

    一直到现在都没有怎么写代码,可能更得比较慢. 作业回顾 先来看一下文章4的作业吧,使用logbook的时候,遇到了时区不对的情况.那么我们怎么去解决这个问题呢? 实际上logbook默认采用的是世界标 ...

  7. 蓝图-BluePrint

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

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

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

  9. Flask - Flask的蓝图(BluePrint)

    目录 Flask - Flask的蓝图(BluePrint) 一. 初始Flask蓝图 进阶Flask蓝图 使用蓝图做一个增删改查 1.使用蓝图进行web应用搭建: 2.使用Flask蓝图,查看学生信 ...

随机推荐

  1. java 11 Stream 加强

    Stream 是 Java 8 中的新特性,Java 9 开始对 Stream 增加了以下 4 个新方法. 1) 增加单个参数构造方法,可为null Stream.ofNullable(null).c ...

  2. Pack

    背包专题 背包吼哇! 基础的背包分为OI01背包,完全背包,多重背包,二维背包,分组背包,树形背包,求方案数等.......... 作为DP的一个基础部分还是有必要写一写的. 01背包: 一个物品能取 ...

  3. Springboot 1.简介 及第一个demo

    按照官网上的新建一个maven项目,然后将类引入pom.xml文件中 <?xml version="1.0" encoding="UTF-8"?> ...

  4. create table as 和create table like的区别

    create table as 和create table like的区别 对于MySQL的复制相同表结构方法,有create table as 和create table like 两种,区别是什么 ...

  5. sprin源码解析之属性编辑器propertyEditor

    目录 异常信息 造成此异常的原因 bean 配置文件 调用代码 特别说明: 异常解决 注册springt自带的属性编辑器 CustomDateEditor 控制台输出 属性编辑器是何时并如何被注册到s ...

  6. Git以及TortoiseGit的下载安装使用

    Git以及TortoiseGit的下载安装使用 下载git 下载地址:https://git-scm.com/然后进行一系列的安装,傻瓜式的操作即可 TortoiseGit Tortoise 英[ˈt ...

  7. requests中自定义adapter

    # encoding:utf-8 import sslfrom requests import sessionsfrom requests import Requestfrom requests.ad ...

  8. Mysq登陆后执行命令提示You must SET PASSWORD before executing this statement

    mysql  安装完成后,在输入命令行时,提示:You must SET PASSWORD before executing this statement 提示必须设置密码,我想不是已经设置了密码吗? ...

  9. Linux中安装C++编译器codeBlock,并配置opencv链接库

    1.Linux中安装codeBlock https://blog.csdn.net/xinyunyishui/article/details/50967395 2.CodeBlock中的中文显示不完全 ...

  10. xheditor编辑器上传图片

    之前在用csdn的时候,觉得他们家的编辑器挺好用,精美,简洁,大方,功能强大.最近自己的项目也要用到编辑器,我就想起了xheditor. 好多大网站都用到它~好棒! 我把xheditor用于文章模块, ...