Flask学习之旅——3 视图高级
前言
- 本文为《知了传课—— 视图高级》的学习笔记。
蓝图
为什么使用蓝图?
- 当项目比较大或者代码比较多的时候,让所有的
url和视图函数放在同一个文件夹里,这样的结构显然不太合理。 - 蓝图可以让我们的
url和视图函数放在不同的文件里,使我们的结构更加的合理。 - 使用蓝图的好处:方便代码的维护,开发项目进行分工合作。
蓝图的使用
Blueprint
-
在使用蓝图时,我们需要用到
Blueprint,这是一个存储视图方法的容器。 -
Blueprint具有如下属性:-
一个项目可以具有多个
Blueprint -
可以将一个
Blueprint注册到任何一个未使用的的URL比如"/"、"/sample/" 或者子域名 -
Blueprint可以单独具有自己的模板、静态文件或者其它的通过操作方法,它并不是必须要实现应用的视图和函数
-
-
创建蓝图(book.py)
from flask import Blueprint # url_prefix: 127.0.0.1:5000/book bp = Blueprint("book",__name__,url_prefix="/book") @bp.route('/list') ###对应的地址为:127.0.0.1:5000/book/list def book_list(): return "图书列表" -
引用蓝图(app.py)
from apps.book import bp as book_bp #引入book.py 里的 bp,为了区分重命名为 book_bp app = Flask(__name__) app.register_blueprint(book_bp)
使用静态文件
-
在默认情况下,
Flask会在项目的static文件夹中寻找静态文件。 -
在初始化蓝图的时候,
Blueprint这个构造函数,有一个参数static_folder可以指定静态文件的路径,路径可以是一个相对于蓝图的路径,也可以是绝对路径,如:bp = Blueprint('book',__name__,url_prefix='/book',static_folder='static') -
如果静态文件是在蓝图文件所在目录下,在模板中引用则需写
蓝图名.static<link href="{{ url_for('book.static',filename='book.css') }}">
使用模板文件
-
在默认情况下,
Flask会在项目的templates文件夹中寻找模板文件。 -
在构造函数
Blueprint中有一个template_folder参数可以设置模板的路径bp = Blueprint('book',__name__,url_prefix='/book',template_folder='templates')- 注意:在使用以上代码的情况下,
Flask还是会去先项目根目录下的templates文件夹中查找模板文件,如果找到了就直接返回,如果没有找到,才会去蓝图文件所在的目录下的templates文件夹中寻找。
- 注意:在使用以上代码的情况下,
-
默认情况下使用
from flask import Blueprint,render_template # url_prefix: 127.0.0.1:5000/book bp = Blueprint("book",__name__,url_prefix="/book") @bp.route('/list') ###对应的地址为:127.0.0.1:5000/book/list def book_list(): return render_template("book_list.html")
使用url_for生成url
-
用
url_for生成蓝图的url,使用的格式是:蓝图名称+.+视图函数名称。 -
例如:
url_for('book.book_list')
2797

被折叠的 条评论
为什么被折叠?



