关于Flask的蓝图解释一二

以下是一个最基本的蓝图示例。在这里,我们将使用蓝图来简单地渲染静态模板:

from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound

simple_page = Blueprint('simple_page', __name__,
                        template_folder='templates')

from app.feedback import feedback #视图
#视图部分 feedback.py
from . import simple_page

@simple_page.route('/', defaults={'page': 'index'})
@simple_page.route('/<page>')
def show(page):
    try:
        return render_template('pages/%s.html' % page)
    except TemplateNotFound:
        abort(404)

当你使用 @simple_page.route 装饰器绑定一个函数时,蓝图会记录下所登记的 show 函数。当以后在应用中注册蓝图时,这个函数会被注册到应用中。另外,它 会把构建 Blueprint 时所使用的名称(在本例为 simple_page )作 为函数端点的前缀。

可以这样注册蓝图:

from flask import Flask
from yourapplication.simple_page import simple_page

app = Flask(__name__)
app.register_blueprint(simple_page)
以下是注册蓝图后形成的规则:

[<Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>,
 <Rule '/<page>' (HEAD, OPTIONS, GET) -> simple_page.show>,
 <Rule '/' (HEAD, OPTIONS, GET) -> simple_page.show>]

所以当外部访问到对应url规则时,会直接找到指定蓝图下的方法。也就是定义蓝图下引入视图的意义,会直接在那里找对应方法。

Last modification:November 26th, 2019 at 09:58 am
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment