以下是一个最基本的蓝图示例。在这里,我们将使用蓝图来简单地渲染静态模板:
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规则时,会直接找到指定蓝图下的方法。也就是定义蓝图下引入视图的意义,会直接在那里找对应方法。
版权属于:Jolly
本文链接:https://totoro.site/index.php/archives/37/
关于转载:原创文章,禁止转载