Flask蓝图

Flask蓝图

概述:蓝图分为两种方式,按照功能划分,与按照结构划分。

1.小蓝图

说明:按照功能划分蓝图。

在视图函数中创建多个 py 文件,每个 py 文件中的视图函数都可以注册到蓝图中;

目录结构如图所示:

image-20220713222802247

manage.py 为启动文件:

# -*- coding: utf-8 -*-
from pythonProject import create_app

app = create_app() # 调用文件创建 app

if __name__ == '__main__':
    app.run()

pythonProject /__init__.py文件是包的标志文件。通常说的导入一个包即为导入它的__init__.py文件;因此我们只需要在__init__.py中创建对应的 app 即可。

from flask import Flask
from .views.account import ac_blueprint

def create_app():
    app = Flask(__name__)
    app.register_blueprint(ac_blueprint,url_prefix = '/web')
    # /web 相当于路由分发的前置
    return app

在小蓝图内编写视图函数

# -*- coding: utf-8 -*-
from flask import Blueprint

ac_blueprint = Blueprint('ac',__name__)

# 将路由注册到蓝图内
@ac_blueprint.route('/f1')
def func():
    return "f1"

image-20220713222550313

2.大蓝图

说明:按照结构划分蓝图。

目录结构

补充:apps 有的时候也可能是与项目名称相同。

image-20220713230849014

# -*- coding: utf-8 -*-
from apps import create_app

app = create_app()

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

创建 app 函数,注册蓝图。

from flask import Flask
from .account import account
from .admin import admin

def create_app():
    app = Flask(__name__)
    app.config.from_object('config.settings') # 加载配置文件
    app.register_blueprint(account)# 注册蓝图
    app.register_blueprint(admin) # 注册蓝图
    return app

在每个项目中创建蓝图

# -*- coding: utf-8 -*-
from flask import Blueprint
admin = Blueprint("ad",__name__)

# -*- coding: utf-8 -*-
from flask import Blueprint
account = Blueprint("ac",__name__,template_folder='templates') 
# 创建蓝图,并指定相关的参数,更加具体的参数可以参考源码示例

from .views import user
# 注意需要写到蓝图对象下面,不然导入的时候蓝图对象不会被加载到内存

源码示例

image-20220713231835448

蓝图中视图函数的写法

# -*- coding: utf-8 -*-
from flask import render_template
from .. import account # 导入蓝图,因此需要在蓝图被创建后将视图模块导入。

@account.route('/login')
def login():
    return render_template('login.html')

相关 html 文件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>内部登录</h1>
</body>
</html>

继续努力,终成大器。

posted @ 2022-07-13 23:21  紫青宝剑  阅读(465)  评论(0编辑  收藏  举报