Flask 实战笔记01 - Blueprint实现Web路由器

编程知识 更新时间:2023-05-03 00:03:45

安装准备

python3 -V && pip3 -V

pip3 install pipenv

pipenv

pipenv shell

PyCharm的环境配置在这里就不做过多解释了,这里针对后续的代码进行讲解。

开始实践

Flask 原理是在App初始化时,将蓝图和App进行绑定来实现Web路由功能,路由的实现是所有项目中的第一步。

入口文件

在项目开始之前,定义一个入口文件,让请求实例化App,入口文件需要做的是初始化配置文件、引入控制器、初始化数据库等操作。

def create_app():
    app = Flask(__name__)
    # 导入config中的配置文件
    app.config.from_object('app.config.setting')
    app.config.from_object('app.config.secure')
    return app

在启动文件中进行调用,启动文件中需要加入判断,原因后续再做解释。

from app.app import create_app

app = create_app()

if __name__ == '__main__':
    app.run(debug =True,port=81,host= '0.0.0.0')

路由

Flask是用蓝图实现的路由功能,在入口文件中添加注册蓝图的方法,实现引入和注册。

from flask import Blueprint

login = Blueprint('login', __name__)


@login.route('/login')
def loginIndex():
    return "login Hello"

在app实例初始化时,引入蓝图模块

from flask import Flask


def create_app():
    app = Flask(__name__)
    # 导入config中的配置文件
    app.config.from_object('app.config.setting')
    app.config.from_object('app.config.secure')
    # 注册并导入蓝图
    register_blue(app)
    return app


def register_blue(app):
    from app.api.login import login
    app.register_blueprint(login)

优化路由器

在每一个路由器中可以添加一个装载器,在初始化来依次加载Flask中的蓝图,已到达优化路由器的目的。

class BaseRoutes:
    def __init__(self, name):
        self.name = name
        self.loader = []

    def route(self, rule, **options):
        def decorator(f):
            self.loader.append((f, rule, options))
            return f

        return decorator

    def register(self, bp, url_prefix=''):
        # 依次注册蓝图
        for f, rule, options in self.loader:
            endpoint = options.pop("endpoint", f.__name__)
            bp.add_url_rule(url_prefix + rule, endpoint, f, **options)

api文件中使用优化后的装载器代码如下:

from app.libs.BaseRoutes import BaseRoutes

api = BaseRoutes('login')


@api.route('/login/loginHandle', methods=['GET', 'POST'])
def loginHandle():
    return "login Hello"

至此,Flask路由的功能开发完毕了,欢迎来学习交流,私信我,一起加油。

更多推荐

Flask 实战笔记01 - Blueprint实现Web路由器

本文发布于:2023-04-29 13:05:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/a59bb0c40f54afe6790190db0b2e9737.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:路由器   实战   笔记   Flask   Web

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 110963文章数
  • 28313阅读数
  • 0评论数