python框架之Flask(3)-Blueprint(蓝图)
蓝图
用途
给开发者提供清晰的目录结构。
使用
目录结构
1、创建项目。

2、在项目目录下创建与项目名同名文件夹。

3、在 test_prj 文件夹下创建 __init__.py 文件,并在其中实例化 Flask 并返回。

from flask import Flask def create_app():
app = Flask(__name__)
return app/test_prj/__init__.py
3、在项目目录下创建 manage.py 文件作为入口,导入 Flask 实例并使用
from test_prj import create_app app = create_app() if __name__ == '__main__':
app.run()/manage.py
4、在项目同名文件夹下创建 views 文件夹用来存放视图文件。

引入蓝图
5、在 views 文件夹下编写视图相关代码。比如新建一个用户逻辑相关视图,并引入蓝图。

# 引入蓝图
from flask import Blueprint # 实例化
usr = Blueprint('usr', __name__) # 编写视图函数
@usr.route('/login')
def login():
return 'login' @usr.route('/logout')
def logout():
return 'logout'/test_prj/views/user.py
6、在 /test_prj/__init__.py 中给 Flask 实例注册蓝图。
from flask import Flask
from .views.user import usr def create_app():
app = Flask(__name__)
app.register_blueprint(usr)
return app/test.prj/__init__.py
7、接下来就可以正常运行访问了。

模板使用
8、在项目同名文件夹下创建 templates 目录。

9、在 templates 目录下新建登录模板,修改视图。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<h2>登录</h2>
</body>
</html>/test_prj/templates/login.html
# 引入蓝图
from flask import Blueprint,render_template # 实例化
usr = Blueprint('usr', __name__) # 编写视图函数
@usr.route('/login')
def login():
return render_template('login.html') @usr.route('/logout')
def logout():
return 'logout'/test_prj/views/user.py
补充
前缀
可以在注册蓝图时通过 url_prefix 属性加上访问该蓝图时的前缀。
app.register_blueprint(admin, url_prefix='/admin')
蓝图装饰器
可以让装饰器只对指定蓝图生效,例如:
from flask import Blueprint, render_template
usr = Blueprint('usr', __name__)
@usr.before_request
def before_request_func():
print('from before_request_func')
指定静态&模板目录
from flask import Blueprint web = Blueprint(
'web',
__name__,
template_folder='templates',
static_folder='static'
)
我测试时好像只对下面的大蓝图适用。
大蓝图
这里说的大蓝图就是对目录结构再更细粒度的划分了,附上示例地址。
https://github.com/zze326/flask_blueprint_pro.git
python框架之Flask(3)-Blueprint(蓝图)的更多相关文章
- flask之Blueprint蓝图
flask_Blueprint.py ''' flask中的Blueprint蓝图: (1)新建模块,例如Bp1.py,Bp2.py,在模块中创建蓝图实例 (2)通过app.register_blue ...
- python框架之Flask
介绍:Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . WSGl:Web Server Gateway ...
- python框架之Flask(1)-Flask初使用
Flask是一个基于 Python 开发并且依赖 jinja2 模板和 Werkzeug WSGI 服务的一个微型框架,对于 Werkzeug 本质是 Socket 服务端,其用于接收 http 请求 ...
- python框架之Flask(6)-flask-sqlalchemy&flask-script&flask-migrate使用
整合SQLAlchemy 安装 pip3 install flask-sqlalchemy 简单使用 from flask import Flask from flask_sqlalchemy imp ...
- python框架之Flask基础篇(二)-------- 数据库的操作
1.flask连接数据库的四步: 倒入第三方数据库扩展包:from flask_sqlalchemy import SQLAlchemy 配置config属性,连接数据库: app.config[&q ...
- python框架之Flask(2)-路由和视图&Session
路由和视图 这一波主要是通过看源码加深对 Flask 中路由和视图的了解,可以先回顾一下装饰器的知识:[装饰器函数与进阶] 路由设置的两种方式 # 示例代码 from flask import Fla ...
- python框架之Flask(4)-上下文管理
知识储备 偏函数 作用 偏函数,帮助开发者自动传递参数. 使用 import functools def index(a1, a2): return a1 + a2 # 原来的调用方式 # ret = ...
- python框架之Flask(5)-@app.before_request原理
示例 from flask import Flask app = Flask(__name__) @app.before_request def xx(): pass @app.route('/') ...
- python框架之Flask基础篇(一)
一.第一个hello world程序 # coding=utf-8 from flask import Flask app = Flask(__name__) @app.route('/') def ...
随机推荐
- 4 Git 基础 - 撤消操作
撤消操作 任何时候,你都有可能需要撤消刚才所做的某些操作.接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失误,就有可能丢失部分工作成果. 修改 ...
- 基于jQuery可悬停控制图片轮播代码
基于jQuery可悬停控制图片轮播代码.这是一款可悬停切换全屏轮播jQuery幻灯片.效果图如下: 在线预览 源码下载 实现的代码: <!-- 轮播广告 --> <div id= ...
- 框架源码系列二:手写Spring-IOC和Spring-DI(IOC分析、IOC设计实现、DI分析、DI实现)
一.IOC分析 1. IOC是什么? IOC:Inversion of Control控制反转,也称依赖倒置(反转) 问题:如何理解控制反转? 反转:依赖对象的获得被反转了.由自己创建,反转为从IOC ...
- ubuntu 下无损扩展分区
命令扩展: http://www.cnblogs.com/greatfish/p/7347945.html http://www.cnblogs.com/wangxingggg/articles/68 ...
- HTML空格占位符
== 普通的英文半角空格 == == == no-break space (普通的英文半角空格但不换行) == 中文全角空格 (一个中文宽度) == == en空格 (半个中文 ...
- php7新特性总结
PHP新功能总结 改进的性能 - 将PHPNG代码合并到PHP7中,速度是PHP 5的两倍. 降低内存消耗 - 优化的PHP 7使用较少的资源. 标量类型声明 - 现在可以强制执行参数和返回类型. 一 ...
- 微软消息队列-MicroSoft Message Queue(MSMQ)队列的C#使用
目录 定义的接口 接口实现 建立队列工厂 写入队列 获取消息 什么是MSMQ Message Queuing(MSMQ) 是微软开发的消息中间件,可应用于程序内部或程序之间的异步通信.主要的机制是:消 ...
- C# 鼠标移动Winform窗体内或者panel容器内的控件 显示虚线/实现虚线框来确定位置
C# 鼠标移动WinForm窗体或者panel容器内的控件 移动虚线/实现虚线框来确定位置 1.用到的方法介绍 今天,根据领导指示指导移动容器内的控件,生成虚线框,使用 ControlPaint.Dr ...
- RE:从零开始的莫比乌斯反演
炫酷反演魔术根本看不懂啊...也就看看PoPoQQQ的ppt了. 这个赛季结束了,一年可以学很多很多东西呢. 因为我是写给自己看的所以写的很垃圾. 公式: 按我的理解,反演就是 x可以表示成y,然后 ...
- sublime3 快速运行 java
build 系统 Java.sublime-build { "cmd": ["javac $file_name && java $file_base_na ...