蓝图Blueprint
---恢复内容开始---
蓝图: flask模块化处理操作和URL的方式
作用:
- 将不同的功能模块化,实现模块化应用
- 构建大型应用
- 优化项目结构
使用步骤
- 创建蓝图对象
- 对蓝图对象进行操作(注册路由; 指定静态文件夹; 注册模板过滤器)
- 在应用对象上注册蓝图对象
代码操作
通过目录式结构定义蓝图

1.简单版
项目文件夹-模块文件夹-模块文件, __init__.py
from flask import Blueprint # 1.创建蓝图
goods_dp = Blueprint('goods', __name__) # 3.和views关联起来,导入views.py 放在此处导入是延迟导入解决循环导入问题
from .views import *
项目文件夹-模块文件夹-模块文件, views.py
from goods import goods_dp # 2.使用蓝图
@goods_dp.route('/goods/info')
def goods():
"""商品视图函数"""
return 'goods'
项目文件夹下项目文件demo1.py
from flask import Flask
from goods import goods_dp app = Flask(__name__) # 4.注册蓝图
app.register_blueprint(goods_dp) if __name__ == '__main__':
print(app.url_map)
app.run(debug=True)
2.加强版, 一般大致是以下这种
项目文件下templates文件夹, 按不同模块建立不同文件夹, 如此处的goods文件夹; goods文件夹下建立HTML文件
goods.HTML里面放入需要添加的内容, 演示只简单操作如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>商品模块</h1> </body>
</html>
1中的代码做下面更改
- views.py做以下更改
导入模块 from flask import render_template
返回语句return render_template("goods/goods.html")
from goods import goods_dp
from flask import render_template # 2.使用蓝图
@goods_dp.route('/goods/info')
def goods():
"""商品视图函数"""
return render_template("goods/goods.html")
运行demo1文件后, 此时浏览器访问127.0.0.1:5000/goods/info, 可以网页显示 商品模块
- 上面views.py中的代码继续更改:
把路径中的goods去掉放入__init__.py文件
from goods import goods_dp
from flask import render_template # 2.使用蓝图
@goods_dp.route('/info')
def goods():
"""商品视图函数"""
return render_template("goods/goods.html")
- __init__.py文件更改
加入前缀url_profix, 在蓝图上注册的路由URL自动被加上了这个前缀,这个可以保证在多个蓝图中使用相同的URL规则而不会最终引起冲突,只要在注册蓝图时将不同的蓝图挂接到不同的自路径即可
from flask import Blueprint # 1.创建蓝图
goods_dp = Blueprint('goods', __name__, url_prefix="/goods") # 3.和views关联起来,导入views.py 放在此处导入是延迟导入解决循环导入问题
from .views import *
蓝图Blueprint的更多相关文章
- 第九篇 蓝图 blueprint
在Flask中的蓝图 blueprint 的作用就是将 功能 与 主服务 分开 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_use ...
- 第九篇 Flask 中的蓝图(BluePrint)
第九篇 Flask 中的蓝图(BluePrint) 蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? ...
- Flask路由与蓝图Blueprint
需求分析: 当一个庞大的系统中有很多小模块,在分配路由的时候怎么处理呢?全部都堆到一个py程序中,调用@app.route? 显然这是很不明智的,因为当有几十个模块需要写路由的时候,这样程序员写着写着 ...
- Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...
- Flask 中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开 怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查 ...
- python 全栈开发,Day120(路由系统, 实例化Flask的参数, 蓝图(BluePrint), before_request after_request)
昨日内容回顾 1.Flask: from flask import Flask app = Flask(__name__) # 从源码中可以看出,Flask集成的run方法是由werkzeug中的ru ...
- 5. 使用Flask蓝图(blueprint)
一直到现在都没有怎么写代码,可能更得比较慢. 作业回顾 先来看一下文章4的作业吧,使用logbook的时候,遇到了时区不对的情况.那么我们怎么去解决这个问题呢? 实际上logbook默认采用的是世界标 ...
- 蓝图-BluePrint
蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...
- 蓝图(Blueprint)详解
Blueprint 模块化 随着flask程序越来越复杂,我们需要对程序进行模块化的处理,针对一个简单的flask程序进行模块化处理 举例来说: 我们有一个博客程序,前台界面需要的路由为:首页,列表, ...
- 9,Flask 中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西,在Flask中的蓝图 blueprint 也是非常宏伟的,它的作用就是将 功能 与 主服务 分开. 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的 ...
随机推荐
- ASP.NET Core API 接收参数去掉烦人的 [FromBody]
在测试ASP.NET Core API 项目的时候,发现后台接口参数为类型对象,对于PostMan和Ajax的Post方法传Json数据都获取不到相应的值,后来在类型参数前面加了一个[FromBody ...
- Lintcode85-Insert Node in a Binary Search Tree-Easy
85. Insert Node in a Binary Search Tree Given a binary search tree and a new tree node, insert the n ...
- adb常用命令(转)
1.Android Debug Bridge -adb常用命令 1.1简介 Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件 ...
- Asp.net core Identity + identity server + angular 学习笔记 (第三篇)
register -> login 讲了 我们来讲讲 forgot password -> reset password 和 change password 吧 先来 forgot pa ...
- 基于百度通用翻译API的一个翻译小工具
前几天写了一个简单的翻译小工具,是基于有道翻译的,不过那个翻译接口有访问限制,超过一定次数后会提示访问过于频繁,偶然发现百度翻译API如果月翻译字符少于200万是不收取费用的,所以就注册了一个百度开发 ...
- R代码展示各种统计学分布 | 生物信息学举例
二项分布 | Binomial distribution 泊松分布 | Poisson Distribution 正态分布 | Normal Distribution | Gaussian distr ...
- Python 用下划线作为变量前缀和后缀指定特殊变量
_xxx 不能用’from module import *’导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划线作为变量名的开始. 因为下划线对解释器有特殊的意义, ...
- warning C4828问题的处理
在QT的一些项目中,有时候会出现如下警告 warning C4828: 文件包含在偏移 0x215 处开始的字符,该字符在当前源字符集中无效(代码页 65001). (编译源文件 XXXXXXcpp) ...
- Appium + Python环境搭建(移动端自动化)
安装JDK,配置JDK环境 百度搜索下载就行,这里分享一个下载链接:https://pan.baidu.com/s/1snuTOAx 密码:9z8r. 下载好后点击进行安装.安装好后进行环境变量 ...
- dedecmsV5.7织梦后台更新文章,发布时间不自动更新
问题:dedecmsV5.7后台修改文章的时候,会更新发布时间,需求是不自动更新时间,还是当时的发布时间 解决: 1.修改后台文件夹/templets/archives_edit.htm,articl ...