随着flask的发展,flask框架越来越复杂,我们需要进行模块化处理,因为之前学过python模块化管理,我可以对一个flask程序进行简单的模块化处理。

我们都有一个博客程序,由此可知博客的前端界面需要的路由:首页,列表页,详情页等页面,如果博主需要编辑博客,必需进入后台处理后台主页,编辑,创建,发布。

因为有很多人都会使用博客,这样会使得在一个.py文件中写入很多路由,在往后的维护代码中会很麻烦,此时我们就需要模块化处理,有时.py文件中的app会直接报错,导致代码没办法写入,因此传统的模块化处理并不适合,我们需要flask程序提供一个特有的模块化处理方法,flask内置了一个模块化处理的类,即Blueprint(蓝图);

蓝图(Blueprint)的概念

Blueprint简单来说,它就是一个储存操作方法的容器,flask可以通过蓝图来组织URL以及处理请求。flask使用Blueprint让应用实现模块化。

什么是蓝图

用于实现单个应用的视图,模板,静态文件的集合。

蓝图的运行机制

蓝图是保存了一组将来可以在应用对象上执行的操作。注册路由就是一种操作,当在程序实例上调用route装饰器注册路由时,这个操作将修改对象的url_map路由映射列表。当我们在蓝图对象上调用route装饰器注册路由时,它只是在内部的一个延迟操作记录列表defered_functions中添加了一个项。当执行应用对象的 register_blueprint() 方法时,应用对象从蓝图对象的 defered_functions 列表中取出每一项,即调用应用对象的 add_url_rule() 方法,这将会修改程序实例的路由映射列表。

在flask中,blueprint具有以下属性:

1.一个应用可以具有多个blueprint;

2.可以将一个blueprint注册到任意一个未使用的URL下比如“/”,“/sample”或子域名。

3.在一个应用中,一个模块可以被注册多次。

4。blueprint可以具有单独属于自己的模板,静态文件或者通过其他的通用操作方法,他并不是需要实现应用的试图和函数。

5.在一个应用初始化时,就应该要注册需要的blueprint,但是一个blueprint并不是一个完整的应用,它不能独立与应用运行,而必须要注册到某一个应用中。

蓝图对象用起来和flask差不多,最大的区别是蓝图对象没有办法独立运行,必须将他注册到一个应用对象上才能生效。

使用蓝图可以分为三部分:

1.创建一个蓝图对象

#Blueprint必须指定两个参数,admin表示蓝图的名称,__name__表示蓝图所在模块

mypart = Blueprint('mypart',__name__)

2. 在蓝图对象上注册一个路由

@mypart.route("/part")
def mindex():
return "这里是部分功能"
3.在应用对象上注册这个蓝图对象
app.register_blueprint(mypart,url_prefix='/part')
当应用启动时,可以通过‘/part’ 访问
 
 
蓝图url前缀
我们在应用对象上注册一个蓝图时,可以制定一个url_prefix关键字参数(默认是/),在蓝图上注册路由url时会自动加上这个前缀,目的是防止注册多个蓝图时,不会起冲突。
只需要注册蓝图时加上不同的路径。
 
 
应用对象注册蓝图
# -*- encoding: utf-8 -*-
#使用蓝图需要依来blueprint库
from flask import Flask,Blueprint
#导入自定义的蓝图文件
from day6_part import mypart
#创建对象
app = Flask(__name__)
#载入文件
app.config.from_pyfile('config.ini')
#注册定义好的蓝图文件,给蓝图的url加前缀
app.register_blueprint(mypart,url_prefix='/part')
@app.route('/')
def index():
return 'aa'
if __name__ == "__main__":
app.run()

注册蓝图

# -*- encoding: utf-8 -*-
from flask import Flask,Blueprint
#建立对象
app = Flask(__name__)
#载入配置文件
app.config.from_pyfile('config.ini')
#注册蓝图

#Blueprint必须指定两个参数,admin表示蓝图的名称,__name__表示蓝图所在模块

mypart = Blueprint('mypart',__name__)
@mypart.route("/part")
def mindex():
return "这里是部分功能"
@mypart.route("/test")
def atest():
return "这里是部分功能test"
# @app.route("/")
# def index():
# return "这里是蓝图副功能"
# if __name__ == "__main__":
# app.run()

蓝图的高阶使用,项目目录下建立两个文件夹 news和 login  在news文件夹中建立蓝图文件news.py,    login文件夹中建立  login.py  ,在单一入口中注册蓝图,通过网址/news和 /login调用

Login。Py副

# -*- encoding: utf-8 -*-

#使用蓝图需要依赖于blueprint库

from flask import Flask ,Blueprint

#创建对象

app = Flask(__name__)

#载入文件

app.config.from_pyfile('config.ini')

#注册自定义的蓝宇文件,给蓝图的url加前缀

loginn = Blueprint('loginn',__name__)

@loginn.route('/')

def index():

return 'login'

# if __name__ == "__main__":

#     app.run()

News.py副

# -*- encoding: utf-8 -*-

from flask import Flask,Blueprint

#建立对象

app = Flask(__name__)

#载入文件

app.config.from_pyfile('config.ini')

#注册蓝图

wws = Blueprint('wws',__name__)

@wws.route('/')

def index():

return '这里是news'

主蓝图

# -*- encoding: utf-8 -*-

from flask import Flask,Blueprint

from news import  news

from login import login

app = Flask(__name__)

app.register_blueprint(news.wws,url_prefix='/news')

app.register_blueprint(login.loginn,url_prefix='/login')

@app.route("/")

def index():

return "这是首页"

if __name__ == "__main__":

app.run()

flask使用蓝图,创建副本的更多相关文章

  1. Flask之蓝图的使用

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

  2. Flask - Flask的蓝图(BluePrint)

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

  3. flask:蓝图--blueprint

    一.蓝图 1.什么是蓝图?(WHAT) 1)蓝图就是模块化处理的类 2)用于实现单个应用的视图.模板.静态文件的集合 总结:蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关 ...

  4. Python Flask Blueprint 蓝图

    Python Flask Blueprint 蓝图 本篇来了解一下 Flask 中 Blueprint 蓝图,什么蓝图 ..就是一个分模块的扩展而已,用来让不同的 业务模块api 分到不同的pytho ...

  5. Mongodb 笔记05 创建副本集

    创建副本集 1. 副本集:副本集时一组服务器,其中有一个主服务器(primary),用于处理客户端请求:还有多个备份服务器(secondary),用于保存主服务器的数据副本.如果主服务器崩溃了,备份服 ...

  6. mongodb创建副本集命令

    mongodb创建副本集命令 ./mongod --replSet spock --dbpath ../data --smallfiles > config ={... "_id&qu ...

  7. 8.MongoDB系列之创建副本集(一)

    1. 复制简介 在MongoDB中,创建副本集后就可以使用复制功能了,副本集是一组服务器,其中一个是用于处理写操作的主节点,还有多个用于保存主节点的数据副本的从节点,如果主节点崩溃了,则从节点会从中选 ...

  8. python flask框架 蓝图的使用

    蓝图的目的是实现 各个模块的视图函数写在不同的py文件当中. 主视图 中 导入 分路由视图的模块,并且注册蓝图对象 分路由视图中 利用 蓝图对象 的route 进行装饰视图函数 主路由视图函数: #c ...

  9. Flask的蓝图和红图

    1.蓝图 对于简单的项目来说,比如项目就只有一个user模块,我们可以都将视图函数定义在一个文件里面,不需要用到蓝图. 但是如果我们的项目有多个模块,如下有v1模块,v2模块.....等,那么如果我们 ...

随机推荐

  1. git开发过程的配置和使用

    git开发过程的使用 1.创建仓库 2.新建项目,填写项目名称等信息 3.初始化仓库,创建git仓库 git init 4.配置个人信息(配置过可忽略) git config --global use ...

  2. 逆袭之旅DAY16.东软实训.Oracle.序列

    2018-07-12 14:07:44 序列 序列1.创建序列create sequence 序列名 [increment by n] ---步长 [start with n] ---序列的起始值 序 ...

  3. 洛谷 P4515 [COCI2009-2010#6] XOR

    题意 平面直角坐标系中有一些等腰直角三角形,且直角边平行于坐标轴,直角顶点在右下方,求奇数次被覆盖的面积.N<=10.输入为x,y,r,分别表示三角形顶点的坐标与三角形的边长. 如: 总面积为0 ...

  4. 【转】Java迭代:Iterator和Iterable接口

    Java迭代 : Iterator和Iterable接口 从英文意思去理解 Iterable :故名思议,实现了这个接口的集合对象支持迭代,是可迭代的.able结尾的表示 能...样,可以做.... ...

  5. 搭建Hadoop2.7.1的分布式集群

    Hadoop 2.7.1 (2015-7-6更新),hadoop的环境配置不是特别的复杂,但是确实有很多细节需要注意,不然会造成许多配置错误的情况.尽量保证一次配置正确防止反复修改. 网上教程有很多关 ...

  6. jQuery操错题积累

    1: 解析: onBlur:焦点移除事件. onfocus:定义和用法 onfocus 事件在对象获得焦点时发生 onchange:定义和用法 onchange 事件会在域的内容改变时发生 nclic ...

  7. Java 面向对象的三大特性之一 继承

    继承: Java是继承的三大特性之一,是Java中实现代码重用的手段之一 将重复的代码抽取到父类中继承的有点或者现实 优点: 方便修改代码 减少代码量 Java中继承的语法: 修饰符 SubClass ...

  8. Bluedroid: 音频数据的传输流程

    一. UIPC:   Audio Flinger获取到a2dp的hw module,然后蓝牙协议栈有专用于发送和接收media数据的线程,名称:btif_media_task.   蓝牙与Audio的 ...

  9. delete和delete[] 区别

    // DeleteAndDelete[].cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Windows.h> ...

  10. SharePoint Framework 把你的客户端web部件连接到SharePoint

    博客地址:http://blog.csdn.net/FoxDave 把你的web部件连接到SharePoint来访问SharePoint中的功能和数据,为终端用户提供更完整的体验.本篇会基于之前构 ...