蓝图
对程序进行目录结构划分
-
蓝图之中小型系统
项目结构百度盘 2l7r
目录结构:
├── flasks
├── pro_flask # 项目文件夹(包)
├── statics # 图片等文件
├── templates # 模板文件夹
├── views # 视图函数文件夹
└── __init__.py
└── manage.py # 启动文件
- flasks/manage.py
from pro_flask import app
if __name__ == '__main__':
app.run()
注意:
若请求扩展在该文件下书写,那么所有的蓝图都会执行请求扩展
若请求扩展在对应的蓝图下书写,那么只有对应的蓝图才会执行请求扩展
- pro_flask/__init__.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Flask
app = Flask(__name__,template_folder='templates',static_folder='statics',static_url_path='/static')
@app.before_request
def before():
print("我是app里面的befor_request")
# 可当做是全局配置的函数,每个请求来都会执行该函数
# 将视图中的蓝图对象导入并注册
from .views.login import login_Blue
app.register_blueprint(login_Blue)
- pro_flask/views/login.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Blueprint # 导入蓝图
from flask import render_template
from flask import request
# 实例化蓝图
login_Blue = Blueprint('login', __name__) # 注意: 蓝图名和视图函数名不能一样
# 蓝图对象配置路由
@login_Blue.route('/login', methods=['GET', "POST"])
def login():
print(request.form)
return render_template('login.html')
补充:
login_Blue = Blueprint('login', __name__, url_prefix='/xxx')
实例化蓝图时,这里的url_prefix参数可加可不加
1. 若加该参数, 则该蓝图下的所有路由都要加上url_prefix对应的值才能访问 如: /xxx/login
2. 若不加该参数, 则该蓝图下的所有路由都按默认的方式访问 如: /login
- pro_flask/templates/login.html
<body>
<h1>用户登录</h1>
<form method="POST">
<input type="text" name="user"/>
<input type="submit" value="提交"/>
</form>
<img src="/static/code.png">
<img src="{{ url_for('static',filename='code.png') }}">
</body>
-
蓝图之大型系统
项目结构百度盘 mhs5
蓝图总结:
在__init__.py中导入蓝图并注册
1 login_Blue = Blueprint('login', name,url_prefix='/xxx') :蓝图URL前缀,url_prefix表示url的前缀,在该蓝图下所有url都加前缀
2 login_Blue = Blueprint('login', name,url_prefix='/xxx',template_folder='tpls'):给当前蓝图单独使用templates,向上查找,当前找不到,会找总templates
3 蓝图的befort_request,对当前蓝图有效
4 大型项目,可以模拟出类似于django中app的概念