python中的flask框架

embedded/2025/2/9 9:18:41/

Flask 是一个用Python编写的轻量级Web应用框架

基于WSGI和Jinja2模板引擎

被称为“微框架”,其核心功能简单,不捆绑数据库管理、表单验证等功能,而是通过扩展来增加其他功能

Flask提供最基本的功能,不强制使用特定工具或库

通过插件和扩展来添加功能,如表单处理、数据库交互等

通过创建Flask对象来初始化应用

将URL映射到视图函数,处理请求并返回响应

使用Jinja2模板引擎渲染HTML页面,支持多种HTTP方法

通过创建Flask对象来初始化应用

Flask基于Werkzeug WSGI工具包和Jinja2模板引擎构建。

Werkzeug为Flask提供了请求和响应处理、路由匹配等基础功能,是Flask处理HTTP请求的底层支撑

 Jinja2则用于模板渲染,可以方便地生成动态HTML页面,实现数据与视图的分离。

Flask 框架

使用pip可以方便快捷地安装 Flask

pip install flask
python">from flask import Flask# 创建 Flask 应用实例
app = Flask(__name__)# 定义路由和视图函数
@app.route('/')
def hello_world():return 'Hello, World!'# 启动应用
if __name__ == '__main__':app.run(debug=True)
导入 Flask 类:从 flask 模块中导入 Flask 类,用于创建 Flask 应用实例。

app = Flask(__name__) 创建了一个 Flask 应用实例,__name__ 是 Python 的内置变量,表示当前模块的名称。

使用 @app.route('/') 装饰器定义了一个路由,当用户访问根路径 / 时,会调用 hello_world 函数,该函数返回一个简单的字符串 'Hello, World!'

app.run(debug=True) 启动应用,debug=True 开启调试模式,方便在开发过程中调试代码,当代码发生变化时,服务器会自动重启。

Flask 使用装饰器来定义路由,允许URL路径映射到对应的视图函数。

python">@app.route('/about')
def about():return 'This is the about page.'

定义了一个 /about 的路由,当用户访问该路径时,会返回 'This is the about page.'。Flask 还支持动态路由

python">@app.route('/user/<username>')
def show_user_profile(username):return f'User {username}'

<username> 是一个动态参数,用户访问 /user/john 时,username 的值会被设置为 'john',并传递给 show_user_profile 函数。

Flask 提供了 request 对象来处理客户端的请求信息,如获取请求参数、请求方法等,使用 Response 对象来返回响应给客户端。

python">from flask import request@app.route('/login', methods=['POST'])
def login():username = request.form.get('username')password = request.form.get('password')# 处理登录逻辑return 'Login successful'

使用 methods=['POST'] 指定该路由只接受 POST 请求,通过 request.form.get() 方法获取表单数据。

Flask 默认使用 Jinja2 模板引擎,允许开发者将动态数据与 HTML 模板结合生成动态页面。创建一个 templates 文件夹,在其中创建 index.html 模板文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>{{ title }}</title>
</head>
<body><h1>{{ message }}</h1>
</body>
</html>

在 Python 代码中使用 render_template 函数渲染模板

python">from flask import render_template@app.route('/template')
def template_demo():return render_template('index.html', title='Template Demo', message='This is a template example.')

render_template 函数会将 titlemessage 变量传递给模板文件,替换模板中的 { { title }}{ { message }} 占位符。

Flask 易于上手和快速搭建,适合在项目初期进行快速原型开发,验证项目的可行性和功能需求。开发者可以在短时间内搭建起一个简单的 Web 应用,展示项目的基本功能,为后续的开发提供基础。

对于一些功能简单、规模较小的 Web 应用,如小型企业网站等,Flask 的轻量级特性可以满足需求,并且易于维护。可以根据项目的实际情况选择合适的第三方库,快速完成项目的开发。

Flask 可以方便地创建 RESTful API,结合 JSON 数据格式,为前端应用或其他服务提供数据接口。

python">from flask import jsonify@app.route('/api/data')
def api_data():data = {'name': 'John', 'age': 30}return jsonify(data)

使用 jsonify 函数将 Python 字典转换为 JSON 格式的响应,方便前端应用或其他服务进行数据交互。

Flask 有丰富的扩展库,可Flask - SQLAlchemy 用于数据库操作,Flask - Login 用于用户认证,Flask - WTF 用于表单处理等。


http://www.ppmy.cn/embedded/160769.html

相关文章

认识网络安全

一 网络攻击链 踩点-工具准备-载荷投递-漏洞利用-释放载荷-建立通道-目标达成 简化下&#xff1a; 目标侦察&#xff1a;准确识别目标&#xff0c;收集目标详细信息&#xff0c;比如 网络、 邮箱、员工、社会关系、对外提供服务、漏洞 信息等&#xff0c;为 后续攻击做准备。…

Java实现状态模式

一、简介 1、定义 状态模式 (State Pattern)是一种行为型设计模式&#xff0c;允许对象在内部状态改变时改变它的行为。通过定义状态接口和具体状态类&#xff0c;将对象的状态和行为分开&#xff0c;使得状态改变时可以改变行为。 2、状态模式的结构 状态模式涉及以下几个角…

【C语言】C语言经典面试题详解

文章目录 引言1. 指针与数组1.1 指针与数组的区别1.2 指针数组与数组指针 2. 内存管理2.1 malloc与free2.2 内存泄漏与悬空指针 3. 函数指针3.1 函数指针的定义与使用3.2 回调函数 4. 结构体与联合体4.1 结构体的内存对齐4.2 联合体的使用场景4.3 位段 5. 预处理器与宏5.1 宏定…

直接插入排序

一&#xff1a;直接插入排序是什么。 二&#xff1a;如何实现直接插入排序 三&#xff1a;直接插入排序时间复杂度 一&#xff1a;直接插入排序它是排序得一种&#xff0c;其目的无非是将乱序通过排序排成有序的。 我们可以通过动画直观看什么是直接插入排序 这是我找的直接…

leetcode 1905. 统计子岛屿

题目如下 数据范围 示例 本题只要在遍历图二岛屿的时候检查图一对应位置是否是陆地即可。通过代码 class Solution { public:bool su true;int countSubIslands(vector<vector<int>>& grid1, vector<vector<int>>& grid2) {int n grid1.…

(免费送源码)计算机毕业设计原创定制:C#+Asp.Net+SQL Server C#(asp.net)大学生创新创业项目管理系统

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;高校当然也不例外。大学生创新创业项目管理系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#…

书籍《新能源汽车动力电池安全管理算法设计》和《动力电池管理系统核心算法》脑图笔记

目录 一、阅读背景二、《新能源汽车动力电池安全管理算法设计》脑图笔记三、《动力电池管理系统核心算法》脑图笔记四、后记参考学习 一、阅读背景 如今身处新能源动力电池行业&#xff0c;欲对动力电池相关算法做一些了解&#xff0c;通过查找相关电子书app&#xff0c;最后找…

CSS Position(定位)详解及举例说明

在CSS中&#xff0c;position属性用于指定元素的定位类型。通过设置不同的position值&#xff0c;我们可以控制元素在页面中的布局方式。position属性有五个常用的值&#xff1a;static、relative、fixed、absolute和sticky。本文将详细介绍这五种定位方式&#xff0c;并通过实…