Flask快速入门4-蓝图

十六,Flask 用蓝图实现模块化的应用
1,Flask 为什么使用蓝图?
Flask 中的蓝图为这些情况设计:

把一个应用分解为一个蓝图的集合。这对大型应用是理想的。一个项目可以实例化 一个应用对象,初始化几个扩展,并注册一集合的蓝图。
以 URL 前缀和/或子域名,在应用上注册一个蓝图。 URL 前缀/子域名中的参数即 成为这个蓝图下的所有视图函数的共同的视图参数(默认情况下)。
在一个应用中用不同的 URL 规则多次注册一个蓝图。
通过蓝图提供模板过滤器、静态文件、模板和其它功能。一个蓝图不一定要实现应 用或者视图函数。
初始化一个 Flask 扩展时,在这些情况中注册一个蓝图。
Flask 中的蓝图不是即插应用,因为它实际上并不是一个应用——它是可以注册,甚至 可以多次注册到应用上的操作集合。
为什么不使用多个应用对象?你可以做到那样 (见 应用调度 ),但是你的应用的配置是分开的,并在 WSGI 层管理。

蓝图作为 Flask 层提供分割的替代,共享应用配置,并且在必要情况下可以更改所 注册的应用对象。
它的缺点是你不能在应用创建后撤销注册一个蓝图而不销毁整个 应用对象。

2,Flask 我的第一个蓝图

一般蓝图项目代码文件结构如下:

 

 

蓝图实际类似于模块分类,bluePrint 目录下是蓝图模块代码文件,需要有一个 ./bluePrint/__init__.py  文件,这个文件名不能改 ;

还一个具体实现蓝图的方法模块文件如: ./bluePrint/views.py,这个名称随便。

./bluePrint/__init__.py :

from flask import Blueprint
#蓝图命名
blue_task = Blueprint("blue_task", __name__)
#导入蓝图的具体实现模块
from . import views

./bluePrint/views.py :

from . import blue_task
from flask import Flask,render_template

#这里就使用蓝图命名的路由了 blue_task,就不用app.route进行路由,避免出现循环路由(特别是随着项目模块的增加)
@blue_task.route("/tasks",methods=['POST','GET'])
def index():
     return "hello world,Blueprint!\n"

#这里就使用蓝图命名的路由了 blue_task,就不用app.route进行路由,避免出现循环路由(特别是随着项目模块的增加)
@blue_task.route('/tasks/index',methods=['POST','GET'])
def books():
    return render_template('task.html')

在bluePrint 目录同级别下也要有一个 ./__init__.py  文件,这个文件名不能改 和一个启动应用文件如:./bluePrintMain.py,这个名称随便。

./__init__.py :

from flask import Flask
#创建一个蓝图app
def create_app():
    app = Flask(__name__)
    # 导入蓝图模块
    from .bluePrint import blue_task
    # 注册蓝图
    app.register_blueprint(blue_task)

    return app

./bluePrintMain.py :

from . import create_app

app = create_app()

if __name__ == '__main__':
    #启动app
    app.run()

./templates/task.html :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>task</title>
    <style>
        div {
            width:200px;
            height:200px;
            background: khaki;
            border:2px solid #000000;
        }
    </style>
</head>
<body>
    <div>我是蓝图:tasks</div>
</body>
</html>

 

以上,基本上Flask入门知识点学会了,差不多能看懂Flask项目了,Flask框架还是很简单的非常适合入门web框架,当然需要实战项目深入理解才能掌握更多。

----------------------------------------------------------------------------end----------------------------------------------------------------------------

 

posted @ 2023-05-16 19:26  PandaCode辉  阅读(93)  评论(0编辑  收藏  举报