Flask 基础组件(七):蓝图
2024-09-07 14:52:21
1 蓝图资源
蓝图有自己的目录,它的所有资源都在其目录下。蓝图的资源目录是由创建Blueprint对象时传入的模块名”__name__”所在的位置决定的。同时,我们可以指定蓝图自己的模板目录和静态目录。比如我们创建蓝图时传入:
admin_bp = Blueprint('admin', __name__,
template_folder='templates',
static_folder='static')
这样,该蓝图的模板目录就在”admin/templates”下,而静态目录就在”admin/static”下。当然,其实默认值就是这两个位置,不指定也没关系。我们可以用蓝图对象的”root_path”属性获取其主资源路径,”open_resource()”方法访问主资源路径下的某个文件,比如:
# 假设 current app 在路径 /home/bjhee/flask-app,
#这个将会返回 /home/bjhee/flask-app/admin
print admin_bp.root_path
# 读取文件 /home/bjhee/flask-app/admin/files/info.txt
with admin_bp.open_resource('files/info.txt') as f:
info = f.read()
print info
2 使用蓝图可以分为四个步骤
- 创建一个蓝图的包,例如users,并在
__init__.py
文件中创建蓝图对象
users=Blueprint('users',__name__)
2.在这个蓝图目录下, 创建views.py文件,保存当前蓝图使用的视图函数
@admin.route('/')
def home():
return 'user.home'
3 在users/init.py中引入views.py中所有的视图函数
from flask import Blueprint
# 等同于原来在 manage.py里面的 app = Flask()
users=Blueprint('users',__name__) from .views import *
4 在主应用main.py文件中的app对象上注册这个users蓝图对象
from users import users
app.register_blueprint(users,url_prefix='/users')
当这个应用启动后,通过/users/可以访问到蓝图中定义的视图函数
3 运行机制
- 蓝图是保存了一组将来可以在应用对象上执行的操作,注册路由就是一种操作
- 当在app对象上调用 route 装饰器注册路由时,这个操作将修改对象的url_map路由表
- 然而,蓝图对象根本没有路由表,当我们在蓝图对象上调用route装饰器注册路由时,它只是在内部的一个延迟操作记录列表defered_functions中添加了一个项
- 当执行app对象的 register_blueprint() 方法时,应用对象将从蓝图对象的 defered_functions 列表中取出每一项,并以自身作为参数执行该匿名函数,即调用应用对象的 add_url_rule() 方法,这将真正的修改应用对象的usr_map路由表
4 蓝图用于为应用提供目录划分:
小型应用程序文件结构
/
yourapplication
/
yourapplication
/
__init__.py
/
views
__init__.py
admin.py
frontend.py
/
static
/
style.css
/
templates
layout.html
index.html
login.html
...
大型应用程序文件结构
/
yourapplication
__init__.py
/
apps
__init__.py
/
frontend
__init__.py
views.py
/
static
style.css
/
templates
index.html
about.html
...
/
admin
__init__.py
views.py
/
static
style.css
/
templates
list_items.html
show_item.html
...
其他:
- 蓝图URL前缀:xxx = Blueprint('account', __name__,url_prefix='/xxx')
- 蓝图子域名:xxx = Blueprint('account', __name__,subdomain='admin')
# 前提需要给配置SERVER_NAME: app.config['SERVER_NAME'] = 'wupeiqi.com:5000'
# 访问时:admin.wupeiqi.com:5000/login.html
最新文章
- Monkey基础
- Synchronized 个人深解
- 《C#编程》课件 - C#基础
- .NET异常问题总结
- Android Glide+CircleImageView实现加载圆形图片列表
- (9)nehe教程3--添加颜色
- Linux下如何在打开终端的时候自动配置相关环境
- QQ音乐的请求
- linux安装xunsearch
- 101个linq例子
- iOS开发——Xcode快捷键
- Fiddler基础使用二之捕获手机应用https请求
- 使用nfs作为根文件系统启动,(3)
- openEntityForm时候如何给关于(regardingobjectid)类型查找字段赋值?
- [LeetCode] Prefix and Suffix Search 前后缀搜索
- httpstatus类的状态有哪些
- [C#]typeof,Gettype()和is的区别
- linux resin 基本站点配置
- ie请求缓存问题,页面内容没有及时更新
- socks5代理使用和安装配置
热门文章
- rollup环境搭建(es6转es5、压缩、本地服务器、热更新)
- 为什么要使用Mybatis-现有持久化技术的对比
- 网络聚合Network Teaming
- ida 动态调试apk
- cb46a_c++_STL_算法_逆转和旋转reverse_rotate函数advance
- c++无法解析的外部符号 ";int const bufferSize
- CODING DevOps 系列第四课:DevOps 中的质量内建实践
- 2020年最佳Java调试工具(翻译)
- Linux 进程间通信(IPC)总结
- 使用Jmeter如何测试下载接口