Flask07——数据库操作-增删改查作者

Flask SQLALchemy 的使用 使用 Flask-SQLAlchemy 定义模型非常简单。你只需继承db.Model并定义类属性即可。每个类属性都将映射到数据库表中的一列。Flask-SQLAlchemy 是一个强大的 Flask 扩展,它简化了在 Flask 应用中使用 SQLAlchemy 的过程。通过定义模型类,你可以轻松地创建数据库表,并通过这些类的实例来操作数据库中的数据。随着应用的增长,Flask-Migrate 可以帮助管理数据库模型的变更。 阅读详情

从黑窗口操作数据库到网页操作数据库

终于到了我们要操作数据库的时候了,接下来的学习将会让你更有成就感,学完了基础的枯燥的语法,现在就到了我们去做一些功能的时候了,我们在网上看到的形形色色的网站从技术上来说其实可以包括两大块:代码实现业务逻辑,数据库保存真实的数据。两者有机的配合才得以形成了我们看到的各种网站。具体数据该怎么展示,这就是代码要做的事情了,这就是我们经常会用到的查询数据。另外,当然还有访问者与网站的交互,可能会添加新数据到网站,修改完整的信息,或者删除一些网站的内容。这些其实都是通过代码来调用数据库来实现最终的增删改查,而已经不是我们之前在黑窗口敲命令来实现增删改查了。网站的增删改查都是由各个请求激发的。那么代码如何操作数据库呢?当然有些同学可能用过由pymysql提供的操作数据库的方法,当然那只是由pymysql包在了我们原生mysql语句的外面,实际上你写的还是原生的sql语句,只是换到了代码里面。那么今天我们讲的操作数据库的方法就要颠覆之前原生语句的实现方式,而是采用我们Python中的类实例化对象,调用对象中的各种方法来操作数据库。

ORM对象关系映射

试想一下,如果我们可以这样定义一个类,比如我们定义一个user类,接着再给user类定义一些属性,比如id、name。然后我们还可以像定义数据库字段一样的来定义id为整型,主键,且可以自动增长。name为字符串,默认不能为空。然后我们可以通过某个指令直接在某个数据库test1中新建一张数据表user。这样我们就通过代码的类新建了数据库的一张表。表建好了,那么随之而来的自然就是要操作表了。当然我们也不会像以前那样写原生的sql语句,我们还可以实例化一下user类,然后用实例化后的user对象,调用类下面的方法比如:user.save(),user.find(),user.edit(),user.delete()来直接操作数据库。做我们的增删改查。是不是特别方便呢?当然上面是伪代码,不是真实的语法。答案是肯定的,这就是我们下面要讲的orm技术,全称为object relation mapping:对象关系映射。通俗来讲就是我们要用对象的形式来解决数据的关联关系问题,也就是把由数据库做的事情挪到了代码层。

flask_sqlalchemy扩展的安装和配置

而在我们的flask框架中,是通过一个扩展来实现的:flask_sqlalchemy。
要使用这个扩展首先需要安装一下:pip install flask_sqlalchemy ,另外要调用mysql我们还需要安装一个mysql的驱动:pip install pymysql。安装了这两个包之后我们就可以首先进行一些链接数据库的配置了。链接数据库的配置项我们可以写在配置文件当中。配置项如下:

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:@127.0.0.1:3306/test1?charset=utf8'

等号前面的配置项名称是固定的,必须这样写才能被框架正确识别,等号后面的含义:链接的数据库类型+使用的驱动://用户名:密码@数据库地址:端口/数据库名称?数据库编码。接着我们还可以再配置一项内容:SQLALCHEMY_ECHO=True。这个配置项的含义是要把我们操作数据库的语句打印到控制台。
配置完之后,接下来我们就需要用flask_sqlalchemy来实例化出来我们的db对象了,并且要绑定到我们的app上面,代码如下:

from flask_sqlalchemy import SQLAlchemy  # 导入扩展包

app = Flask(__name__)

app.config.from_object('setting')  # 引入数据库配置项

db = SQLAlchemy(app=app)  # 实例化SQLAlchemy类,并绑定到app上

经过上面之后,我们才能在flask框架中使用由flask_sqlalchemy扩展提供的各种操作。

创建表

下面我们用flask_sqlalchemy提供的建表语句来通过类的形式创建表。

class Author(db.Model):
    id = db.Column(db.Integer, primary_key=True, comment='作者主键ID')
    name = db.Column(db.String(30), nullable=False, comment='作者姓名')

下面说一下上面的建表语句的注意点。首先要想使得我们创建的这个类能跟数据库的表产生映射关系,首先很重要的一点就在于要让我们这个类继承自db.Model类,然后表中的每个字段都是通过db.Column来创建的,里面的参数既是这个字段的约束。

db.Integer:定义此字段为整型
primary_key:定义此字段为主键且自动递增
comment:定义此字段注释
db.String(30):定义此字段为字符串,括号内定义字符串长度
nullable:定义此字段是否为空,False即不为空

上面就是关于类定义数据库表的具体解释。那么我们怎么来创建表呢?

创建表

可以通过在在main的判断条件的地方加建表语句db.create(),一般为了避免数据冗余会在创建之前先清空一下数据库,会加上db.drop(),来删除之前存在的所有数据。具体如下:

if __name__ == '__main__':
    db.drop_all()
    db.create_all()
    app.run(port=9000)

然后重启服务,如果你配置正确,这个时候你会在控制台看到打印出来的建表语句,能打印出来就是我们刚才配置的SQLALCHEMY_ECHO=True在起作用。然后我们可以用可视化工具navicat查看一下我们是否成功创建了表呢。创建之后就可以把db.drop_all()和db.create_all()给注释掉,不然等下我们写入数据的话,会把我们的数据给清除掉。需要使用的时候再打开。

模板

<!--base.html文件-->
{% block top %}
    <a href="{{ url_for('index') }}">首页</a>
    <a href="{{ url_for('all_authors') }}">所有作者</a>
    <a href="{{ url_for('add_author') }}">添加作者</a>
    <hr>
{% endblock top %}
{% block content %}
    内容
{% endblock content %}
{% block bottom %}
    <hr>
    底部
{% endblock bottom %}
<!--index.html文件-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
    {% extends 'base.html' %}
    {% block content %}
        首页
    {% endblock content %}
</body>
</html>

添加作者

@app.route('/')
def index():
    return render_template('index.html')
    
@app.route('/add_author', methods=['GET', 'POST'])
def add_author():
    if request.method == 'POST':  # 接收数据和提交到数据库都是用的post请求
        name = request.form.get('name')  # 接收要添加的数据,通过参数名获取传递的内容
        new_author = Author(name=name)  # 实例化Author类生成一个新对象,对应数据库里面的一条新的记录
        # 有错误立即显示出来。
        # db.session.add(new_author1)  # 做添加的准备
        # db.session.commit()  # 真正的提交
        # try except可以将错误捕获隐藏,自己自定义错误提醒。
        try:
            db.session.add(new_author1)  # 做添加的准备
            db.session.commit()  # 真正的提交
            flash('添加成功!')
        except Exception as e:
            flash('添加不成功!')
    return render_template('add_author.html')  # 展示模板页面是用的get请求
<!--add_author.html文件-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加作者</title>
</head>
<body>
    {% extends 'base.html' %}
    {% block content %}
        <form action="" method="post">
            作者名称:<input type="text" name="name" value="" > <br>
            <input type="submit" value="确认添加">
        </form>
        {% for message in get_flashed_messages() %}
            <span style="color:red">{{ message }}</span>
        {% endfor %}
    {% endblock content %}
</body>
</html>

所有作者

@app.route('/all_authors')
def all_authors():
    authors = Author.query.all()  # 通过此方法可以获取作者表所有作者记录
    print(authors)
    return render_template('all_authors.html', authors=authors)  # 传递给模板,来遍历所有作者记录
<!--all_authors.html-->

<!DOCTYPE html>
<html lang="en">
<head><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>所有作者</title>
</head>
<body>
    {% extends 'base.html' %}
    {% block content %}
        {% for author in authors %}
            <p>{{ author.id }}、{{ author.name }} |
                <a href="{{ url_for('edit_author', author_id=author.id) }}">编辑</a> |
                <a href="{{ url_for('delete_author', author_id=author.id) }}">删除</a> |
            </p>
        {% endfor %}
        {% for message in get_flashed_messages() %}
            <span style="color:red">{{ message }}</span>
        {% endfor %}
    {% endblock content %}
</body>
</html>

编辑作者

# 和添加不同的是需要传递修改数据的id,才知道你要修改哪条数据
@app.route('/edit_author', methods=['GET', 'POST'])
def edit_author():
    author_id = request.args.get('author_id')  # 确定拿到要修改哪条记录的id
    one_author = Author.query.get(author_id)  # 根据当前数据的id,通过主键到数据库拿到当前id的记录(对象)
    if request.method == 'POST':
        name = request.form.get('name')  # 需要修改的数据
        one_author.name = name  # 将传递过来的name的值赋值到现有对象(记录)的相应字段name上
        try:
            db.session.add(one_author)
            db.session.commit()
            flash('修改成功!')
        except Exception as e:
            flash('修改不成功!')
        return redirect(url_for('all_authors'))
    return render_template('edit_author.html', one_author=one_author)  # 传递作者现有数据到模板,以备显示出来
<!--edit_author.html-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>编辑作者</title>
</head>
<body>
    <form action="" method="post">
        <input type="text" value="{{ one_author.name }}" name="name">
        <input type="submit" value="确定编辑">
    </form>
</body>
</html>

删除作者

@app.route('/delete_author')
def delete_author():
    author_id = request.args.get('author_id')  # 跟编辑一样需要获取当前用户的id
    one_author = Author.query.get(author_id)  # 通过id获取当前记录(对象)
    try:
        db.session.delete(one_author)  # 删除整条记录(对象)
        db.session.commit()
        flash('删除成功!')
    except Exception as e:
        flash('删除不成功!')
    return redirect(url_for('all_authors'))  # 删除之后跳转到所有作者页面
零成本实现飞牛 OS 内网穿透:CloudFlare 隧道搭建全攻略 一、引言:突破内网限制的最优解当你的内网环境中部署了飞牛 OS 系统(无论是老旧电脑还是 NAS 设备),想要实现公网访问时,传统方案往往面临两大痛点:公网 IP 申请困难且成本高DDNS 动态解析配置复杂专业内网穿透工具存在付费门槛今天为大家带来零成本解决方案:通过免费域名搭配 CloudFlare 隧道技术,无需公网 IP 即可轻松实现飞牛 OS 服务的公网访问。全程操作可视化,新手也能快速上手!二、前期准备:必备工具清单(1)域名准备。 阅读详情

相关推荐

从手机到单片机:聊聊ARM Cortex家族那些事,A、R、M系列到底有啥不同?

本文深入解析ARM Cortex家族的A、R、M三大系列处理器,揭示它们在性能、实时响应和能效方面的核心差异。从智能手机到汽车电子和物联网设备,Cortex-A、R、M各司其职,分别应对复杂运算、实时控制和超低功耗场景。通过技术指标对比和典型应用案例,帮助开发者理解如何根据DMIPS/MHz等关键参数选择适合的处理器架构。

weixin_31574149的博客 351

图书管理系统(三):作者列表增加、删除和编辑

步骤一:创建作者列表 步骤二:添加作者 步骤三:删除作者 步骤四:编辑作者 步骤一:创建作者列表 1.先创建数据表 class Author(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(ma...

weixin_30882895的博客 578

从硬件异常到代码救赎:RH850内存访问错误(MAE)的深层诊断与艺术

本文深入探讨瑞萨RH850微控制器的内存访问错误(MAE)诊断与解决方法。针对程序跑飞和Flash Driver交互中的潜在陷阱,提供系统性硬件异常分析框架和防御性编程实践,帮助嵌入式开发者从底层机制到代码层面有效预防和修复MAE问题,提升系统稳定性。

pytorch8learner的博客 197

使用flask框架实现对数据库的相关操作的介绍说明

from flask import Flask from flask_sqlchemy import SQLAlchemy  #操作数据库的扩展包 from flask_script import Manager  # 用命令操作的扩展包 app = Flask(__name__) #创建对象 db = SQLAlchemy(app) manager = Manager(app) 一...

qq_37253540的博客 673

激光雷达+相机标定避坑指南:手把手教你用KITTI数据完成坐标转换

本文详细介绍了激光雷达与相机标定的实战指南,利用KITTI数据集完成精准坐标转换。从数据准备、工具链搭建到标定矩阵加载与验证,再到坐标转换流水线的工程实现,提供了全面的避坑技巧和工程实践建议。特别强调了多传感器融合中的常见问题及解决方案,帮助开发者提升自动驾驶和机器人感知系统的环境感知精度。

book8的博客 837

在鸿蒙中使用AVPlayer完成视频的播放【坚果派】

播放的全流程包含:创建AVPlayer,设置播放资源和窗口,设置播放参数(音量/倍速/缩放模式),播放控制(播放/暂停/跳转/停止),重置,销毁资源。5.准备播放:调用prepare(),AVPlayer进入prepared状态,此时可以获取duration,设置缩放模式、音量等。8.退出播放:调用release()销毁实例,AVPlayer进入released状态,退出播放。6.视频播控:播放play(),暂停pause(),跳转seek(),停止stop() 等操作。今天我们来看一下视频如何正常播放。

坚果的博客 4057

Flask-sqlalchemy 语法总结

Flask-sqlalchemy 语法总结 Flask-sqlalchemy 语法总结 ** DDL db.create_all() :创建实体表 db.drop_all(): 删除表 1)插入表 Db.session.add(user) #user是实体对象 ##批量插入 Db.session.add_all([user1,user2,user3,…..]) ##提交 Db.session...

起飞的木木的博客 889

【个人学习总结】CRC校验原理及实现

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 ..................

星Yeah 的博客 7968

flask拓展(数据库操作)

目录 一、初始Flask数据库操作 二、深入Flask数据库操作 三、补充Flask数据库多对多关系操作 一、初始Flask数据库操作 1.Flask模型 Flask默认并没有提供任何数据库操作的API 我们可以选择任何适合自己项目的数据库来使用 Flask中可以自己的选择数据,用原生语句实现功能,也可以选择ORM(SQLAlchemy,MongoEngine) SQLAlchem...

weixin_30673715的博客 293

代码接单:用 ComfyUI 搭建电商模特换装工作流(保姆级教程)

在闲鱼和小红书上,搜一下“AI 模特图”或者“服装换模特”,你会发现大量的接单需求。太贵:请个外模拍一套图,动辄几千块。太慢:寄样品、排期、拍摄、修图,半个月过去了。太卷:竞对都在上新,你还在等图。“给我一张你的衣服平铺图(或假人图),我 10 分钟给你生成真人上身图,一张只要 50 块。对于商家是省钱,对于你是纯利润。为什么不用 Midjourney?因为 MJ 抽卡不可控,无法保持衣服版型一致。只有 ComfyUI,才能做到精准控制,实现工业化量产。

BUG猿的博客 1784

【全志V821_FoxPi】6-2 IMX219 MIPI摄像头适配

全志V821芯片适配IMX219 MIPI摄像头(2lane)教程,基于FoxPi开发板V1.2 SDK。文章详细介绍了IMX219的技术参数(800万像素、1/4英寸CMOS、支持1080P@30fps输出)及模组接口原理图。重点展示了设备树配置方法,包括PIO引脚定义(TWI0使用PA3/PA4,复位引脚PA2)、TWI0节点设置(100kHz时钟)以及VIND0节点中sensor0的完整配置(I2C地址0x20、MCLK0、RAW格式输出等)。配置过程强调需注意IMX219的器件地址转换(0x10→0

第四维度的博客 2255

<Flask>-sqlalchemy操作数据库

文章目录1 简述2-导包与配置3-增删改查3.1 增3.2 删3.3 改3.4 查4 一对多模型4.1 理解4.2 代码实现5 多对多模型5.1 理解5.2 代码实现6-自关联一对多模型6.1 理解6.2 代码实现7-自关联多对多模型7.1 理解7.2 代码实现8-数据库迁移写在最后的杂七杂八 1 简述 操作数据分为数据库模型的创建于数据库迁移,数据库的创建依赖于 flask-sqlalchemy 一对多模型 多对多模型 自关联一对多模型 自关联多对多模型 2-导包与配置 import flask_sq

kobe_okok的博客 2224

详解舵机的基本原理以及控制方法

文章目录什么是舵机?伺服控制硬件连接舵机规格SG90MG90SMG996R总结 什么是舵机? 舵机是伺服电机的一种,伺服电机就是带有反馈环节的电机,我们可以通过伺服电机进行精确的位置控制或者输出较高的扭矩; 舵机也叫也叫 RC 伺服器,通常用于机器人项目,也可以在遥控汽车,飞机等航模中找到它们。 类似舵机这样的伺服系统通常由小型电动机,电位计,嵌入式控制系统和变速箱组成。 电机输出轴的位置由内部电位计不断采样测量,并与微控制器(例如STM32,Arduino)设置的目标位置进行比较; 根据相应的偏差,控制

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 4万+

Flask框架的学习——07—(Flask操作MySQL数据库、使用ORM对数据库的增删改查操作、SQLAlchemy属性常用数据类型)

1、Flask操作MySQL数据库 在上一篇博客中创建完数据表,并且做完和数据库的映射后,接下来让我们添加数据进去。 from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm imp...

weixin_42118531的博客 650

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Flask+LayUI开发手记(四):弹出层实现增删改查功能

在上一节用dataTable实现数据列表时,已经加了表头工具栏和表内工具栏,栏内的按钮功能都是用来完成数据的增删改查了,这又分成两类功能,一类是删除或设置,这类功能简单,只需要选定记录,然后提交到后端服务进行特定字段的修改即可,另一类是查明细、增加、修改记录,这三类功能,都需要生成一个新的数据编辑界面完成记录全内容的展示,然后输入相应的字段值,提交到后端服务进行相应的数据更新操作,同时,在录入和提交时,还需要对录入字段值进行合规检查。对前端界面来说,最重要的参数是当前记录的id值,以及当前页数。

hbrown的博客 1644

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

flask_sqlalchemy 实现数据的增删改查操作案例

flask_sqlalchemy 实现数据的增删改查操作案例 刚刚接触flask_sqlalchemy,自己做了 一个增删改查的案例,分享给大家 。 链接:https://pan.baidu.com/s/1lOzjmHXb-bs39hxWX0n7_g 提取码:dj64

一介书生 543

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Flask-SQLAlchemy:ORM操作数据库增删改查的详细指南

Flask-SQLAlchemy 是 Flask 框架的一个强大扩展,使得与数据库的交互变得简单和直观。ORM(对象关系映射)允许我们使用 Python 类和对象来表示数据库中的表和记录,从而简化了增删改查(CRUD)操作。本文将详细介绍如何使用 Flask-SQLAlchemy 进行这些操作。定义一个简单的模型,例如用户模型User通过本文,您已经了解了如何使用 Flask-SQLAlchemy 进行数据库的增删改查操作。使用 Flask-SQLAlchemy,您可以轻松地管理数据库操作,提高开发效率。

霍格沃兹测试学院的博客 935

【Flask 数据库 操作】 SQLAlchemy 与 Flask-SQLAlchemy

Enum:枚举类型。Double:双精度浮点类型,映射到数据库中是double类型,占据64位 (SQLALCHEMY中没有)。创建属性来映射到表中的字段,所有需要映射到表中的属性都应该为Column类型。Float:浮点类型,映射到数据库中是float类型。LONGTEXT:长文本类型,映射到数据库中是longtext类型。String:可变字符类型,映射到数据库中是varchar类型。Boolean:布尔类型,映射到数据库中的是tinyint类型。类 属性,来指定这个模型映射到数据库中的表名。

qq_39286483的博客 1351

【Flask框架】模型Model

Flask作为一款MVC的框架,提供ORM的功能。

gecko 1885

Flask框架内容基础4 连接数据库及orm模型与表的映射

Flask-SQLAlchemy简化了在Flask应用中使用SQLAlchemy的过程,提供了一些方便的功能,例如自动管理数据库会话和事务,以及提供了一些Flask特定的扩展,如Flask-Migrate用于数据库迁移。ORM框架提供了一系列的API和工具,用于执行数据库的增删改查操作,并处理对象与数据库之间的映射和转换。然后输入安装命令时,显示需要的工具库已经存在,造成这样的原因是由于使用python虚拟解释器时,当前解释器内没有该工具库,但是在其他的环境中,已经下载了这个工具库。

m0_59362850的博客 692

Flask SQLAlchemy 数据库笔记

title: Flask SQLAlchemy 数据库 copyright: true top: 0 date: 2018-07-24 13:27:03 tags: [Flask 数据库,sqlalchemy,数据库映射] categories: Flask permalink: password: keywords: [Flask 数据库,sqlalchemy,数据库映射] descripti...

浪子燕青的博客 1389

python标准化开发框架_Python Flask框架——全栈开发

课程来自知了传课的Python Flask框架——全栈开发,共60+小时的课时,知识体系完整,实战贴近企业,实打实的干货,本套课程的目标是从零基础开始,使用Flask框架开发企业级的项目。课程中不仅包含了Flask框架本身的知识点,更是站在全栈的角度讲解了如何结合Flask使用ajax完成异步调度,使用redis实现大型网站的缓存优化,使用celery实现邮件的异步发送等。更是紧随时代的脚步加入了...

weixin_42363231的博客 668

Flask高级应用06---模型的CRUD和高级用法

一、数据映射(数据库crud基础操作) 注意:在迁移前首先要开启数据库mysql 1.创建模型==create_all() 对创建的模型数据进行迁移,这个方法只能用于首次创建,后面迁移需要用migrate(不建议用),建议用sql语句,orm实现的数据库迁移不是最有方式 @blue.route('create_db/') #设置路由信息 def create_db(): ...

清平乐的技术专栏 953

知了课堂python_Python框架Flask系列课程(2)—全栈开发[知了课堂]

教程目录:课时01.【Flask预热】课程介绍.flv课时02.【Flask预热】Flask课程准备工作.flv课时03.【Flask预热】URL组成部分详解.flv课时04.【Flask预热】web服务器+应用服务器+web应用框架.flv课时05.【Flask.URL】第一个flask程序详解.flv课时06.【Flask.URL】debug模式详解.flv课时07.【Flask.URL】配置...

weixin_39566864的博客 1182

59 - restful接口案例(新闻)-07-新闻分类增删改查

新闻类型返回格式# 添加-参数校验type_parser.add_argument("typeName", type=str, required=True, help="必须添加新闻分类名字", location=["form", "json"])# 修改-参数校验update_type_parser.add_argument("id", type=int, required=True, help="必须添加要修改的分类id")# 删除-参数校验。

m0_58250910的博客 145

vue基于python高校教材管理系统的设计与实现_8g07s

Spring封装了很多的java类库文件,在开发过程中,不需要写太多复杂的类文件,只需要引用spring这个框架,就可以完成快速开发的需要,所以Java编程的逻辑代码就变得比较清晰,各层之间的解耦性也比较强,可重用性也得到了很好的发挥,使得开发难度也更加轻松容易,它的主要两个特性就是依赖注入、面向接口思想;Vue实现了MVVM框架,通过后台的模型进行业务逻辑的处理,并将数据绑定到视图层中,在视图层绑定显示控件,将Model对象的数据绑定到页面控件中,实现数据的自动同步。监控系统性能指标,设置告警机制。

我的个人的博客 1108
上一篇: Flask06——Jinja2模板引擎
下一篇: Flask10——蓝图
零寂前端
博客等级 码龄11年 59粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值