flask使用蓝图,创建副本
随着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__表示蓝图所在模块
2. 在蓝图对象上注册一个路由
注册蓝图
#Blueprint必须指定两个参数,admin表示蓝图的名称,__name__表示蓝图所在模块
蓝图的高阶使用,项目目录下建立两个文件夹 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使用蓝图,创建副本的更多相关文章
- Flask之蓝图的使用
蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...
- Flask - Flask的蓝图(BluePrint)
目录 Flask - Flask的蓝图(BluePrint) 一. 初始Flask蓝图 进阶Flask蓝图 使用蓝图做一个增删改查 1.使用蓝图进行web应用搭建: 2.使用Flask蓝图,查看学生信 ...
- flask:蓝图--blueprint
一.蓝图 1.什么是蓝图?(WHAT) 1)蓝图就是模块化处理的类 2)用于实现单个应用的视图.模板.静态文件的集合 总结:蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关 ...
- Python Flask Blueprint 蓝图
Python Flask Blueprint 蓝图 本篇来了解一下 Flask 中 Blueprint 蓝图,什么蓝图 ..就是一个分模块的扩展而已,用来让不同的 业务模块api 分到不同的pytho ...
- Mongodb 笔记05 创建副本集
创建副本集 1. 副本集:副本集时一组服务器,其中有一个主服务器(primary),用于处理客户端请求:还有多个备份服务器(secondary),用于保存主服务器的数据副本.如果主服务器崩溃了,备份服 ...
- mongodb创建副本集命令
mongodb创建副本集命令 ./mongod --replSet spock --dbpath ../data --smallfiles > config ={... "_id&qu ...
- 8.MongoDB系列之创建副本集(一)
1. 复制简介 在MongoDB中,创建副本集后就可以使用复制功能了,副本集是一组服务器,其中一个是用于处理写操作的主节点,还有多个用于保存主节点的数据副本的从节点,如果主节点崩溃了,则从节点会从中选 ...
- python flask框架 蓝图的使用
蓝图的目的是实现 各个模块的视图函数写在不同的py文件当中. 主视图 中 导入 分路由视图的模块,并且注册蓝图对象 分路由视图中 利用 蓝图对象 的route 进行装饰视图函数 主路由视图函数: #c ...
- Flask的蓝图和红图
1.蓝图 对于简单的项目来说,比如项目就只有一个user模块,我们可以都将视图函数定义在一个文件里面,不需要用到蓝图. 但是如果我们的项目有多个模块,如下有v1模块,v2模块.....等,那么如果我们 ...
随机推荐
- vmware自定义网段
vmware会自动随机给分配192.168下的一个C段作为虚拟网卡(如VMnet8)的网段. 有时我们可能不想使用随机分配的网段而想使用指定网段 注意:配置成新网段后VMware会认为所有IP都没分配 ...
- git通过diff文件,合并未上传代码库代码
今天有段代码需要从别人的机器上同步到本地,但是这段代码还没上库,所以要么将这部分代码打包传过来,或者,用下面的办法. 由于代码修改涉及多个文件,打包搞过来确实比较麻烦,在网上找了下,发现可以用git ...
- MySQL数据库安装与配置鸡汤
目录 一.概述 二.MySQL安装 三.安装成功验证 四.NavicatforMySQL下载及使用 一.概述 MySQL版本:5.7.17 下载地址:http://rj.baidu.com/soft/ ...
- Python Number 类型转换
int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个浮点数 complex(real [,imag ]) 创建 ...
- oracle和sql server中,取前10条数据语法的区别
在sql server中,取数据中前10条语句,我们可以用top 10 这样语句,但是oracle就没有这个函数,接下来介绍它们之间的区别 1.sql server 取前10语句和随机10条的语法 - ...
- ELementUI 树形控件tree 获取子节点同时获取半选择状态的父节点ID
使用element-ui tree树形控件的时候,在选择一个子节点后,使用getCheckedKeys 后,发现只能返回子节点的ID,但是其父节点ID没有返回. 解决办法有三种: 1.element ...
- Linux第九周作业
学习笔记 不同类型的进程有不同的调度需求,其中分为两类 第一类:I/O-bound(频繁进行I/O,花费长时间等待I/O操作的完成)CPU-bound(计算密集型,需要大量的CPU时间进行运算) 第二 ...
- laravel的日志服务
日志服务使用: $app=app(); $log=$app->make('log'); $log->info('post_index',['data'=>'this is post ...
- Java中的标签
@SuppressWarnings 简介:java.lang.SuppressWarnings是J2SE 5.0中标准的Annotation之一.可以标注在类.字段.方法.参数.构造方法,以及局部变量 ...
- jsp下载excel文件
jsp下载excel文件的的实现方法很多,今天也遇到这个问题,乱敲了一阵,终于搞定了,记下来和朋友们分享吧. 假设需要下载excel文件的jsp页面名为:down.jsp 对应的后台action名为: ...