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的相对路径,指定路径的参数是

template_folder = ' 文件夹名字  '

示例代码:

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 = ' 文件夹名字  ')

猜你喜欢

转载自blog.csdn.net/hebi123s/article/details/82348676