Flask中的蓝图(BluePrint)、

蓝图

1.初识Flask蓝图(BluePrint)

创建一个项目然后将目录结构做成:

user.py中的内容

from flask import Blueprint, render_template  # 导入Flask中的蓝图BluePrint模块
# 实例化一个蓝图对象
users_blue = Blueprint(‘users‘, __name__, template_folder=‘user_temp‘, url_prefix=‘/user‘)
# 这里添加路由和视图函数的时候与在Flask对象中添加是一样的
@users_blue.route(‘/user_add‘)  # /user/user_add
def user_add():
    return render_template(‘user_add.html‘)  # 会优先从外面找,如果外层有同名的html就展示的是外层的  

app_blue.py中的内容

from flask import Flask, render_template, request, session, redirect
import setting
from serv import users  # 导入写好的蓝图模块

app = Flask(__name__, template_folder=‘temp‘, static_folder=‘jingtaiwenjianmulu‘, static_url_path=‘/static‘)
app.config.from_object(setting.Debug)# 在Flask对象中注册蓝图模块中的蓝图对象 users中的user_blue
app.register_blueprint(users.users_blue)

@app.route(‘/detail‘, endpoint=‘detail‘)
def detail():
    return render_template(‘detail.html‘)

@app.route(‘/login‘, methods=[‘GET‘, ‘POST‘], strict_slashes=False)
def login():
    if request.method == ‘GET‘:
        return render_template(‘login.html‘)
    else:
        session[‘user‘] = request.form.get(‘username‘)
        return redirect(‘/‘)

if __name__ == ‘__main__‘:
    app.run(debug=True)  

巨坑:

  蓝图内部的视图函数及route不要出现重复。

3.使用蓝图,做一个增删改查用户

要有一个文件存放我们的原始数据

student_data.py文件中的内容:

STUDENT = [
    {‘id‘: 1, ‘name‘: ‘w‘, ‘age‘: 22, ‘gender‘: ‘中‘},
    {‘id‘: 2, ‘name‘: ‘j‘, ‘age‘: 23, ‘gender‘: ‘男‘},
    {‘id‘: 3, ‘name‘: ‘s‘, ‘age‘: 24, ‘gender‘: ‘女‘},
]

  然后我们根据以上内容进行增删改查

3.1使用蓝图进行web应用搭建:

__init__.py文件中的内容:

from flask import Flask

def create_app():
    app = Flask(__name__)

    return app

这个文件我们会修改函数create_app中的代码

student_manager.py文件中的内容:

from student import create_app

flask_app = create_app()

flask_app.run(‘0.0.0.0‘, 5000) 

通过这种方式启动Flask程序

3.2 使用蓝图查看学生信息

stu_list.html文件的内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>学生列表</title>
</head>
<body>
<a href="/stu_add">添加学生</a>
<table border="3px">
    <thead>
    <tr>
        <th>ID</th>
        <th>name</th>
        <th>age</th>
        <th>gender</th>
        <th>options</th>
    </tr>
    </thead>
    <tbody>
    {% for stu in student %}
        <tr>
        <td>{{ stu.id }}</td>
        <td>{{ stu.name }}</td>
        <td>{{ stu.age }}</td>
        <td>{{ stu.gender }}</td>
        <td><a href="/stu_update/{{ stu.id }}">编辑</a> | <a href="/stu_delete?id={{ stu.id }}">删除</a></td>
        </tr>
    {% endfor %}
    </tbody>
</table>
</body>
</html>

stu_select.py文件中的内容:

from flask import Blueprint
from flask import render_template
from student_data import STUDENT

stu_blueprint = Blueprint(‘stu_bp‘, __name__, template_folder=‘html‘, static_folder=‘static‘)

@stu_blueprint.route(‘/stu_list‘)
def stu_list():
    return render_template(‘stu_list.html‘, student=STUDENT)

student/__init__.py文件中的内容:

from flask import Flask
from student_select import stu_select

def create_app():
    app = Flask(__name__)
    app.register_blueprint(stu_select.stu_blueprint)

    return app  

3.3使用Flask蓝图,添加一个学生

stu_add.html中内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>添加学生</title>
</head>
<body>
<form action="" method="post">
    ID:    <input type="text" name="id"> <br>
    姓名: <input type="text" name="name"> <br>
    年龄: <input type="text" name="age"> <br>
    性别: <input type="text" name="gender"><br>
    <input type="submit" value="添加学生">
</form>
</body>
</html>  

stu_add.py中的内容

from flask import Blueprint
from flask import redirect
from flask import request
from flask import render_template
from student_data import STUDENT

stu_add = Blueprint(‘stu_add‘, __name__, template_folder=‘html‘)

@stu_add.route(‘/stu_add‘, methods=[‘GET‘, ‘POST‘])
def stu_add_view():
    if request.method == ‘POST‘:
        stu_dic = {
            ‘id‘: request.form[‘id‘],
            ‘name‘: request.form[‘name‘],
            ‘age‘: request.form[‘age‘],
            ‘gender‘: request.form[‘gender‘],
        }
        STUDENT.append(stu_dic)

        return redirect(‘/stu_list‘)
    return render_template(‘stu_add.html‘)

student/__init__.py文件中的内容

from flask import Flask
from student_select import stu_select
from student_add import stu_add

def create_app():
    app = Flask(__name__)
    app.register_blueprint(stu_select.stu_blueprint)
    app.register_blueprint(stu_add.stu_add)

    return app  

3.4使用Flask蓝图,修改学生信息

stu_update.html文件中的内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>学生列表</title>
</head>
<body>
<form action="" method="post">
    <input type="text" name="id" hidden value="{{ student.id }}"><br>
    姓名:<input type="text" name="name" value="{{ student.name }}"><br>
    年龄:<input type="text" name="age" value="{{ student.age }}"><br>
    性别:<input type="text" name="gender" value="{{ student.gender }}"><br>
    <input type="submit" value="修改信息">
</form>
</body>
</html>  

stu_update.py中的内容

from flask import Blueprint, request, render_template, redirect
from student_data import STUDENT

stu_update = Blueprint(‘stu_update‘, __name__, template_folder=‘html‘)

@stu_update.route(‘/stu_update/<nid>‘, methods=[‘GET‘, ‘POST‘])
def stu_update_view(nid):
    if request.method == ‘POST‘:
        stu_id = request.form[‘id‘]
        stu_dic = {
            ‘id‘: stu_id,
            ‘name‘: request.form[‘name‘],
            ‘age‘: request.form[‘age‘],
            ‘gender‘: request.form[‘gender‘],
        }
        for index, stu in enumerate(STUDENT):
            if stu[‘id‘] == stu_id:
                STUDENT[index] = stu_dic

        return redirect(‘/stu_list‘)
    for stu in STUDENT:
        if stu[‘id‘] == nid:
            return render_template(‘stu_update.html‘, student=stu)
    return render_template(‘stu_update.html‘, student=‘‘)  

student/__init__.py文件中的内容:

from flask import Flask
from student_select import stu_select
from student_add import stu_add
from student_update import stu_update

def create_app():
    app = Flask(__name__)
    app.register_blueprint(stu_select.stu_blueprint)
    app.register_blueprint(stu_add.stu_add)
    app.register_blueprint(stu_update.stu_update)

    return app

3.5使用Flask蓝图,删除学生信息

  

原文地址:https://www.cnblogs.com/wjs521/p/10134486.html

时间: 2024-11-04 19:51:01

Flask中的蓝图(BluePrint)、的相关文章

Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)

蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将 查看客户,修改客户,添加客户,删除客户的四个功能做成蓝图加入到客户管理系统中,本篇最后会做

Flask 中的蓝图(BluePrint)

目录 1.Flask蓝图概述 2.一个简单的蓝图实现 2.1 实例一: 2.2 实例二: 3.蓝图实现学生信息的增删改查 3.1学生信息查看: 3.2学生信息更新: 3.3学生信息增加: 3.4管理学生信息的主服务器: 3.5管理学生信息的web视图: 1.Flask蓝图概述 作用就是将功能与主服务分开,蓝图没有run方法 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_u

flask中的蓝图 Blueprint

模块化 随着flask程序越来越复杂,我们需要对程序进行模块化的处理,之前学习过python的模块化管理,于是针对一个简单的flask程序进行模块化处理 简单来说,Blueprint 是一个存储操作方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用,Flask 可以通过Blueprint来组织URL以及处理请求. Flask使用Blueprint让应用实现模块化,在Flask中,Blueprint具有如下属性: 一个应用可以具有多个Blueprint 可以将一个Blu

Flask初识,第九篇,Flask中的蓝图

蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将 查看客户,修改客户,添加客户,删除客户的四个功能做成蓝图加入到客户管理系统中,本篇最后会做

Flask中的蓝图

一.前言 蓝图,听起来高大上的一匹,在Flask中的蓝图 blueprint 也是一个非常高大上的东西,它的作用就是将功能与主服务分开 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将:查看客户,修改客户,添加客户,删除客户的四个功能做成蓝图加入到客户管理系统中,本篇最后会做一个这样

flask中的蓝图与子域名实现

内容: 1.flask中的蓝图 2.flask子域名实现 1.flask中的蓝图 一个大型项目中视图比较多,如果仅仅是写在app.py中不方便管理,蓝图就可以做到分功能分目录结构 (1)什么是蓝图 蓝图:用于实现单个应用的视图.模板.静态文件的集合. 蓝图就是模块化处理的类 简单来说,蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关联的功能. 在Flask中,使用蓝图可以帮助我们实现模块化应用的功能. (2)蓝图的运行机制 蓝图是保存了一组将来可以在应用对象上执行的操

Flask初学者:蓝图Blueprint

蓝图这个名字好像就是根据单词Blueprint字面意思来,跟平常我们理解的蓝图完全挂不上钩,这里蓝图就是指Blueprint. 使用蓝图的好处是可以将不同功能作用的视图函数/类视图放到不同的模块中,可以更加方便的开发和维护 导入Blueprint:from flask import Blueprint 创建一个蓝图:例如user_bp = Blueprint('user', __name__, prefix='/user'),第一参数指定蓝图名称,第二个参数与flask中的使用是相同的(用于指定

Flask基础(一)之蓝图(blueprint)

蓝图(blueprint)的目的是实现 各个模块的视图函数写在不同的文件目录中,程序入口模块(主视图)中导入功能模块(模块视图),并且注册蓝图对象功能模块(分路由视图)中利用蓝图对象.route 进行装饰视图函数 main.py from flask import Flask from orders import order_blue # 导入我们自定义的蓝图(功能模块蓝图对象) app = Flask(__name__) # 将蓝图注册到 程序入口文件 app.register_bluepri

Flask 中 @app.before_request、@app.after_request 和 @app.teardown_request

Flask 中 @app.before_request.@app.after_request 和 @app.teardown_request flask中又两种 context(上下文),分别是 application context 和 request context. 其中 request 就是 request context.当 HTTP 请求过来的时候,进入这个上下文. 题主的那些方法都是一些 flaks 的 hooks.用于针对 request 做一些操作,比如 before_requ