python基础——flask_blueprint使用

flask_blueprint使用

由于项目开发是一个非常耗时间和精力的工程,如果我们将所有的Flask请求方法都写在同一个文件下的话,非常不便于我们代码管理和后期功能代码的添加。

如下示例:我们在一个文件中写入多个路由,这会使代码维护变得困难。
在这里插入图片描述
如果我们想把每个路由分模块进行开发,可以使用blueprint模块

在这里插入图片描述

一、导入blueprint包:pip install flask-blueprint
二、在views包下创建多个模块文件,我们以bank.py为例

from flask import Blueprint
from flask import request

blue = Blueprint('bank_blue', __name__)


@blue.route('/bank', methods=['GET', 'POST'])
def bank():
    return "<h3>hi, bank-blue</h3>"


@blue.route('/delbank', methods=['GET'])
def delbank():
    bank_id = request.args.get('id')
    return f"<h3>正在删除银行{bank_id}</h3>"

三、在flask中注册该蓝图

from flask import Flask
from flask import request, render_template
# 导入蓝图模块
from views import bank

# 创建Flask对象-Httpd WEB服务对象
app = Flask(__name__)  # __name__ 可以是任意的小写字母,表示Flask应用对象名称


# 声明WEB服务的请求资源(指定资源访问的路由)
# RESTful 设计风格关于资源的动作:'GET':获取数据, 'POST':更新数据, 'PUT':添加数据, 'DELETE':删除数据
@app.route('/hello', methods=['GET', 'POST'])
def hello():
    name = ''
    password = ''
    if request.method == 'GET':
        return """
            <h1>用户登录页面</h1>
            <form action="/hello" method="post">
                <input name="username" placeholder="用户名" /><br>
                <input name="password" placeholder="口令" /><br>
                <button>提交</button>
            </form>
        """
    elif request.method == 'POST':
        # 在flask中获取post请求参数
        name = request.form.get('username')
        password = request.form.get('password')
    # request是请求对象(HttpRequest),它包含请求资源的路径、请求方法、请求头、上传的表单数据、文件等信息
    # 在wsgi中获取查询参数 -> QUERY_STRING:username=disen&password=123
    # 在flask中获取请求中的查询参数(username, password):这是获取get请求的参数
    # name = request.args.get('username')
    # password = request.args.get('password')

    return """
                <h1>用户登录的信息</h1>
                <h3>用户名:{}</h3>
                <h3>口令:{}</h3>
            """.format(name, password)


@app.route('/add_bank', methods=['GET', 'POST'])
def add_bank():
    # 加载数据(model 交互操作)
    data = {
        'title': '绑定银行卡',
        'error_message': '卡号和银行名称不能为空'
    }
    # 渲染模板
    html = render_template('bank_edit.html', **data)
    return html


# 启动flask的WEB服务器
if __name__ == '__main__':
    """
    register_blueprint有很多参数:
    blueprint:就是要导入的蓝图模块
    url_prefix:可以添加访问前缀
    """
    # 将蓝图对象注册到flask服务中
    app.register_blueprint(bank.blue)
    app.run(host='localhost', port=5000)  # 默认只有一个进程,默认是单线程,多进程和多线程不能同时开启

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值