十六,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. 清除 TortoiseSVN已存储的连接URL地址

    Eclipse 清除 SVN 的 URL 历史记录1.关闭 Eclipse2.进入 工程目录 \.metadata\.plugins\org.tigris.subversion.subclipse.c ...

  2. 即时通讯技术文集(第43期):直播技术合集(Part3) [共13篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第 43 期. [-1-] 直播系统聊天技术(一):百万在线的美拍直播弹幕系统的实时推送技术实践 ...

  3. Docker简易操作

    Docker简易操作 1.启动docker sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...] sudo docker run -d -p 8009: ...

  4. FileGDB代码示例

    FileGDB代码示例 1. 读取FileGDB图层 1.1 实现思路 graph TD A[注册OGR] --> B[设置中文路径支持] B --> C[打开数据驱动] C --> ...

  5. Linux 终端

    在 Linux 系统中,终端设备通常分为主设备和从设备.这是一种特殊的设备对的概念,其中: 主设备: 主设备也称为 "master device". 它是终端设备的控制端,用于与用 ...

  6. Solution Set - “一二行诗句相遇,十万颗恒星解体”

    目录 0.「集训队互测 2018」Fim4 1.「ABC 294Ex」K-Coloring 2.「NOI Simu.」解码 3.「NOI Simu.」图 4.「NOI Simu.」表达式 5.「ULR ...

  7. C# 调用FFmpeg 合并视频和音频

    C#修改环境变量: string pathStr = System.Environment.GetEnvironmentVariable("Path", EnvironmentVa ...

  8. 【java提高】---细则(4)

    java提高(16)---java注解 注解含义注解是JDK1.5之后才有的新特性,它相当于一种标记,在程序中加入注解就等于为程序打上某种标记,之后又通过类的反射机制来解析注解. 一.JDK自带注解 ...

  9. Win7远程桌面连接不上

    Windows远程桌面连接不上有多种情况,当完成基本设置后,如果连不上,那么最可能的情况是防火墙和网络设置不匹配. 1. 检查一下Window防火墙中远程桌面的设置,默认情况下只允许"家庭/ ...

  10. CPU算力如何计算

    本文分享自天翼云开发者社区<CPU算力如何计算>,作者:l****n 什么是算力 随着国家大力发展数字基础设施,算力的提升和普惠变得越来越重要,它注定会在人们的视线中占据很重要的一席.那么 ...