第6天:常用的Python库和框架——Flask:Web开发框架简介

server/2024/10/25 18:34:24/

引言:

Flask 是一个简单而灵活的 Python Web 开发框架。它被设计成易于使用,并且能够快速开发 Web 应用程序。Flask 提供了一个简洁的核心,并以扩展的方式提供了许多功能。作为一个微型框架,Flask 提供了最基本的功能,可以使用插件或扩展来添加更多的功能,以满足开发者的需求。

Flask 的主要特点包括:

简洁:

Flask 以简洁为设计理念,核心只包含了最基本的功能,不对开发者进行限制,方便开发者进行自定义扩展。

易于学习:

Flask 的 API 设计简单明了,没有过多的概念和复杂的配置。开发者可以很快上手,快速开发出功能完备的 Web 应用。

轻量级:

Flask 将复杂的任务分解为简单的组件,并通过插件系统进行扩展。它没有强制性的依赖,只需要安装 Flask 就可以开始开发。

RESTful 支持:

Flask 对创建 RESTful API 提供了强大的支持,可以轻松地构建符合 RESTful 架构风格的 Web 服务。

下面我们通过一个简单的示例来演示 Flask 的使用。

首先,我们需要安装 Flask,可以使用以下命令通过 pip 进行安装:

python">pip install flask

接下来,我们创建一个 app.py 文件并在其中编写以下代码:

python">from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return 'Hello, World!'if __name__ == '__main__':app.run()

在上面的代码中,我们导入了 Flask 模块并创建了一个 Flask 应用。@app.route(‘/’) 是一个装饰器,用于定义 URL 路由。当用户访问根路径时,会执行 hello() 函数,并返回 ‘Hello, World!’。

最后,我们可以在命令行中运行以下命令启动应用:

python">python app.py

运行后,你将看到类似以下的输出:

python"> * Running on http://localhost:5000/ (Press CTRL+C to quit)

现在,你可以在浏览器中访问 http://localhost:5000/,就能看到页面显示 ‘Hello, World!’。

当使用 Flask 进行 Web 开发时,你将会涉及到很多常用的功能和技术,下面我将介绍一些常见的 Flask 功能和实例代码。

路由和视图函数

在 Flask 中,使用路由来定义 URL 和相应的视图函数。路由是通过装饰器 @app.route() 来创建的。
下面是一个接收 URL 参数的示例:

python">@app.route('/user/<username>')
def show_user(username):return f"Hello, {username}!"

请求和响应

Flask 提供了方便的用于处理请求和响应的功能。通过 request 对象可以获取请求的信息,通过 make_response() 函数可以创建响应对象。

下面是一个获取请求参数并返回响应的示例:

python">from flask import request@app.route('/hello')
def hello():name = request.args.get('name', 'Anonymous')return f"Hello, {name}!"

模板渲染

使用模板引擎可以将动态数据渲染到 HTML 页面中。Flask 默认支持 Jinja2 模板引擎。

下面是一个使用模板引擎的示例:

python">from flask import render_template@app.route('/')
def index():return render_template('index.html', title='Home')

在上面的示例中,index.html 是一个模板文件,可以包含动态的数据和逻辑。

表单处理

Flask 提供了 Flask-WTF 扩展来处理 Web 表单。它能够方便地实现表单验证和数据处理。

下面是一个使用 Flask-WTF 处理表单的示例:

python">from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequiredclass MyForm(FlaskForm):name = StringField('Name', validators=[DataRequired()])submit = SubmitField('Submit')@app.route('/form', methods=['GET', 'POST'])
def form():form = MyForm()if form.validate_on_submit():name = form.name.datareturn f"Hello, {name}!"return render_template('form.html', form=form)

在上面的示例中,我们定义了一个表单类 MyForm,其中包含一个文本字段和一个提交按钮。当表单被提交时,表单数据会被验证,并通过 form.validate_on_submit() 方法进行判断。

数据库集成

Flask 可以与各种数据库进行集成,常用的有 SQLite、MySQL、PostgreSQL 等。通过使用 Flask 的扩展,如 Flask-SQLAlchemy 或 Flask-MySQLdb,可以轻松地进行数据库操作。

下面是一个使用 Flask-SQLAlchemy 进行数据库操作的示例:

python">from flask_sqlalchemy import SQLAlchemyapp.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydatabase.db'
db = SQLAlchemy(app)class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(50), nullable=False)@app.route('/users')
def users():users = User.query.all()return render_template('users.html', users=users)

在上面的示例中,我们定义了一个 User 模型类,并使用 SQLAlchemy 来进行数据库操作。users() 函数查询所有用户,并将结果传递给模板进行渲染。

这只是一小部分 Flask 的功能和示例,Flask 还提供了许多其他功能和扩展,如用户认证、API 开发、错误处理等。你可以根据自己的需求选择合适的扩展,以及查阅 Flask 的官方文档和社区资源,进一步学习和深入了解 Flask 的用法和特性。

总结一下,Flask 是一个灵活、易学的 Python Web 开发框架,通过使用路由、视图函数、请求和响应、模板渲染、表单处理、数据库集成等功能,可以快速地构建出功能丰富的 Web 应用程序。无论是初学者还是专业开发者,Flask 都是一个值得学习的。


http://www.ppmy.cn/server/104498.html

相关文章

设计模式六大原则(六)--迪米特法则

1. 简介 1.1. 概述 迪米特法则(Law of Demeter),也被称为最少知识原则(Principle of Least Knowledge),是面向对象设计中非常重要的一条原则。它主要强调的是一个对象应该对其他对象有最少的了解,即一个对象应该只与其他对象的接口发生关系,而不应该依赖于这些对象的…

SpringBoot集成kafka-生产者发送消息

springboot集成kafka发送消息 1、kafkaTemplate.send()方法1.1、springboot集成kafka发送消息Message对象消息1.2、springboot集成kafka发送ProducerRecord对象消息1.3、springboot集成kafka发送指定分区消息 2、kafkaTemplate.sendDefault()方法3、kafkaTemplate.send(...)和k…

未设置辅助手机的谷歌账号停用,申诉回来后登录需要手机验证,验证两次后成功恢复。

谷歌账号被停用后怎么办&#xff1f;果断申诉&#xff0c;申诉方法和模板等见我前面的文章或视频。 通常申诉以后1-2天会反馈结果&#xff0c;而且大部分&#xff08;80%以上&#xff09;会第一次就被审批通过&#xff0c;如下图所示&#xff1a; 当收到上面这样的邮件&#x…

MySQL中处理JSON数据:大数据分析新方向,技术详解与应用场景

随着大数据时代的来临&#xff0c;数据分析和处理成为企业决策和业务优化的关键手段。JSON&#xff08;JavaScript Object Notation&#xff09;作为一种轻量级的数据交换格式&#xff0c;因其易于阅读和编写&#xff0c;以及易于机器解析和生成&#xff0c;被广泛应用于Web应用…

SQL——建表时是否需要设置外键?从哪些方面考虑?

1. 设置外键&不设置外键区别和影响 在数据库设计中&#xff0c;是否设置外键会对数据的完整性、安全性、性能等多个方面产生影响。以下是设置外键与不设置外键的区别和影响&#xff1a; 1. 数据完整性 设置外键: 强制数据完整性: 外键约束确保引用关系中的数据保持一致性…

C++中二叉搜索树的底层原理及实现

小编在学习完二叉搜索树(SearchBinaryTree)之后觉得虽然二叉搜索树不是很难&#xff0c;但是它对于后面学习C中的AVL树和红黑树及map和set的封装都有重要的作用&#xff0c;因此小编今天带给大家二叉搜索树的原理及实现&#xff0c;话不多说&#xff0c;开始学习&#xff01;~~…

PT:如何获取net的Delta delay信息

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 来自星球提问: crosstalk的Delta delay可以从三个渠道获取: report_timing

UE5 多个类选择界面生成。解决方案思路。

中控器CC 》用户界面控制器UI_CC 》用户界面UI_Inst 生成 CC使用接口&#xff0c;通知UI_CC开始生成UI_Inst。 蓝图函数库编写判断是否存在和创建UI的蓝图。&#xff08;此处略&#xff09; UI_CC生成时&#xff0c;userwidget使用接口&#xff0c;注册UI_CC的用户控件的控件…