十六,Flask 用蓝图实现模块化的应用
1,Flask 为什么使用蓝图?
Flask 中的蓝图为这些情况设计:

把一个应用分解为一个蓝图的集合。这对大型应用是理想的。一个项目可以实例化 一个应用对象,初始化几个扩展,并注册一集合的蓝图。
以 URL 前缀和/或子域名,在应用上注册一个蓝图。 URL 前缀/子域名中的参数即 成为这个蓝图下的所有视图函数的共同的视图参数(默认情况下)。
在一个应用中用不同的 URL 规则多次注册一个蓝图。
通过蓝图提供模板过滤器、静态文件、模板和其它功能。一个蓝图不一定要实现应 用或者视图函数。
初始化一个 Flask 扩展时,在这些情况中注册一个蓝图。
Flask 中的蓝图不是即插应用,因为它实际上并不是一个应用——它是可以注册,甚至 可以多次注册到应用上的操作集合。
为什么不使用多个应用对象?你可以做到那样 (见 应用调度 ),但是你的应用的配置是分开的,并在 WSGI 层管理。

蓝图作为 Flask 层提供分割的替代,共享应用配置,并且在必要情况下可以更改所 注册的应用对象。
它的缺点是你不能在应用创建后撤销注册一个蓝图而不销毁整个 应用对象。

2,Flask 我的第一个蓝图

一般蓝图项目代码文件结构如下:

蓝图实际类似于模块分类,bluePrint 目录下是蓝图模块代码文件,需要有一个 ./bluePrint/__init__.py  文件,这个文件名不能改 ;

还一个具体实现蓝图的方法模块文件如: ./bluePrint/views.py,这个名称随便。

./bluePrint/__init__.py :

from flask import Blueprint
#蓝图命名
blue_task = Blueprint("blue_task", __name__)
#导入蓝图的具体实现模块
from . import views

./bluePrint/views.py :

from . import blue_task
from flask import Flask,render_template #这里就使用蓝图命名的路由了 blue_task,就不用app.route进行路由,避免出现循环路由(特别是随着项目模块的增加)
@blue_task.route("/tasks",methods=['POST','GET'])
def index():
return "hello world,Blueprint!\n" #这里就使用蓝图命名的路由了 blue_task,就不用app.route进行路由,避免出现循环路由(特别是随着项目模块的增加)
@blue_task.route('/tasks/index',methods=['POST','GET'])
def books():
return render_template('task.html')

在bluePrint 目录同级别下也要有一个 ./__init__.py  文件,这个文件名不能改 和一个启动应用文件如:./bluePrintMain.py,这个名称随便。

./__init__.py :

from flask import Flask
#创建一个蓝图app
def create_app():
app = Flask(__name__)
# 导入蓝图模块
from .bluePrint import blue_task
# 注册蓝图
app.register_blueprint(blue_task) return app

./bluePrintMain.py :

from . import create_app

app = create_app()

if __name__ == '__main__':
#启动app
app.run()

./templates/task.html :

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>task</title>
<style>
div {
width:200px;
height:200px;
background: khaki;
border:2px solid #000000;
}
</style>
</head>
<body>
<div>我是蓝图:tasks</div>
</body>
</html>

以上,基本上Flask入门知识点学会了,差不多能看懂Flask项目了,Flask框架还是很简单的非常适合入门web框架,当然需要实战项目深入理解才能掌握更多。

----------------------------------------------------------------------------end----------------------------------------------------------------------------

Flask快速入门4-蓝图的更多相关文章

  1. Flask快速入门

    flask快速入门 1.1.三种框架比较 Django: 重武器,内部包含了非常多组件:ORM.Form.ModelForm.缓存.Session.中间件.信号等 Flask:短小精悍,内部没有太多组 ...

  2. 【转】Flask快速入门

    迫不及待要开始了吗?本页提供了一个很好的 Flask 介绍,并假定你已经安装好了 Flask.如果没有,请跳转到 安装 章节. 一个最小的应用 一个最小的 Flask 应用看起来会是这样: from ...

  3. 【先验知识归纳】Flask快速入门

    本文参考:快速入门 - Flask 0.10.1 文档 路由 Flask使用route修饰器来关联URL与程序函数: @app.route('/') def hello_world(): return ...

  4. Flask快速入门day 01(flask介绍、快速使用、配置文件、路由系统)

    目录 Flask框架 前言: 一.flask介绍 1.介绍 2.使用两种协议编写web 二.flask快速使用 1.快速使用: 2.使用flask编写登录小案例 2.1 login.html 2.2 ...

  5. Flask快速入门,知识整理

    一.Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是 ...

  6. Flask官方文档学习-flask快速入门

    环境搭建 下载安装Python3:www.python.org 终端运行命令:python3 -m venv flask_dev,来创建虚拟环境 启用虚拟环境,终端使用命令 source /flask ...

  7. Flask 快速入门

    最简单的flask程序 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return ...

  8. 二 Flask快速入门

    1: 外部可访问的服务器: 如果你运行了这个服务器,你会发现它只能从你自己的计算机上访问,网络中其它任何的地方都不能访问.在调试模式下,用户可以在你的计算机上执行任意 Python 代码.因此,这个行 ...

  9. flask 快速入门链接

    http://docs.jinkan.org/docs/flask/quickstart.html

  10. Flask快速入门day02(1、CBV使用及源码分析,2、模板用法,3、请求与响应的基本用法,4、session的使用及源码分析,5、闪现,6、请求扩展)

    目录 Flask框架 一.CBV分析 1.CBV编写视图类方法 二.CBV源码分析 1.CBV源码问题 2.补充问题 3.总结 三.模板 1.py文件 2.html页面 四.请求与响应 1.reque ...

随机推荐

  1. 阿里云maven仓库地址的配置

    两种配置方式: 1. maven 配置文件配置settings.xml中设置mirror节点 <mirror> <id>nexus-aliyun</id> < ...

  2. 微信Windows端IM消息数据库的优化实践:查询慢、体积大、文件损坏等

    本文由微信客户端技术团队工程师"Jon"分享,原题"Windows微信:消息数据库架构演进",有较多修订. 1.引言 本文分享的是,微信客户端团队基于对微信用户 ...

  3. 查看Android是否开机启动进入桌面

    adb 或者 串口终端 getprop sys.boot_completed 返回空代表没有进入桌面返回1代表已进入桌面

  4. Java生成Word文档之 XDocReport 和 Poi-tl

    近期参与的多个项目中,均涉及根据预定义模板生成Word文档以供前端下载的需求.以往,我们通常采用将Word文档转换为XML格式,并通过代码赋值变量的方式来实现这一功能.尽管此方法在技术层面可行,但当面 ...

  5. matlib:图像旋转-缩放

    需求 使用MATLAB尝试完成一个自定义的图像攻击软件,功能描述: 1)根据输入参数,完成旋转功能 2)根据输入参数,完成缩放功能 开始 旋转 参数:参数为正,顺时针旋转:参数为负,逆时针旋转 主要代 ...

  6. Kotlin:【Map集合】集合创建、集合遍历、元素增加

    to本身是一个函数

  7. Rookie Mistake pg walkthrough Intermediate jwt+ssti

    nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A 192.168.189.221 Starting Nmap 7.94SVN ( https://nmap.org ...

  8. VulNyx - Responder靶场

    靶机ip 192.168.200.9 先nmap 扫描全端口 这个22端口不知道有没有开 被过滤了 我们 收集一下靶机的ipv6地址 nmap用ipv6地址扫他的端口就能绕过 他的端口过滤 ping6 ...

  9. 理解ABP的领域驱动设计

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 关于玩转ABP框架相关的文章,之前在博客园陆续写了<ABP vNext系列文 ...

  10. 个人数据保全计划:部署joplin server笔记同步服务

    前言 在这个数据爆炸的时代,个人数据的价值愈发凸显,成为我们生活与工作中无可替代的重要资产.上一篇文章里,我介绍了从印象笔记迁移至 Joplin 的过程,这是我寻求数据自主掌控的关键一步.在探索同步方 ...