blueprint
什么是blueprint,蓝图,就是将大型的项目,分层解耦模块化。
代码和模块都得解耦。
示例代码:
from flask import render_template
from flask import Blueprint
#第一步先引入
user_bp = Blueprint('user',__name__)
#第二步,使用blueprint初始化一个,必须要传递2个参数(蓝图的名字,和importname),url_profix可规定统一的前缀
#第三步,用user_bp变量接收
#第四步,用蓝图将视图函数映射
#第五步,将写好的蓝图绑定主APP上。分2个步骤,先引入,然后注册
@user_bp.route('/profile/')
def profile():
return '个人中心页面'
@user_bp.route('/settings/')
def settings():
return render_template('settings.html')
-------------------------
from flask import Flask
from blueprints.user import user_bp
app = Flask(__name__)
app.register_blueprint(user_bp)
@app.route('/')
def hello_world():
return 'hello world!'
if __name__ == '__main__':
app.run(debug=True)
---------------------------------
蓝图对应的视图函数,返回值,同样支持那 render_template。
返回的模板文件,会先在 template文件中寻找,如果有就直接使用
如果template中没有,会在蓝图初始化中,指定的路径寻找。指定路径需要使用,相对blueprints的相对路径,指定路径的参数是
示例代码:
user_bp = Blueprint('user',__name__,url_prefix='/user',template_folder = ' 文件夹名字 ')
-----------------------------------------
蓝图中加载静态文件,有2种方式
一种是,直接使用 static的中的文件
一种是,指定引用的module,在module初始化的话的时候,指定静态文件的路径
示例代码1:
<link rel="stylesheet" href="{{ url_for('static',filename = 'settings_list.css')}}"> <style> body{ background: pink; } </style>
示例代码2
<link rel="stylesheet" href="{{ url_for('user.static',filename = 'settings_list.css')}}"> <style> body{ background: pink; } </style>
如果没有指定会报错
werkzeug.routing.buildERROR: Could not build url for endpoint 'user.static' with values ['filename']. Did you mean 'user.settings' instead?
指定路径的参数为:
user_bp = Blueprint('user',__name__,url_prefix='/user',template_folder = ' 文件夹名字 ',static_folder = ' 文件夹名字 ')