当前位置: 首页 > news >正文

Python Flask: 构建轻量级、灵活的Web应用

17458caee457f764a07161b09048e20c.jpeg

Flask是一个流行的Python Web框架,以其轻量级、灵活和易学的特性受到开发者的喜爱。本文将深入探讨Flask框架的各个方面,通过详实的示例代码,帮助大家更全面地了解和掌握这一强大的工具。

1. 安装与基本用法

首先,需要安装Flask。

使用以下命令:

pip install Flask

然后,我们创建一个简单的Flask应用:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return 'Hello, Flask!'

在这个示例中,导入了Flask类,创建了一个应用实例,并使用@app.route('/')装饰器定义了根路径的视图函数hello

运行应用:

python your_file_name.py

访问http://localhost:5000,你将看到"Hello, Flask!"。

2. 路由与视图函数

Flask使用路由来将URL映射到相应的视图函数。

以下是一个更复杂的例子:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def home():return 'Home Page'@app.route('/about')
def about():return 'About Page'

通过定义多个路由,使得不同的URL请求能够映射到不同的视图函数,提供了更灵活的路由控制。

3. 模板引擎

Flask内置了Jinja2模板引擎,用于将动态数据渲染到HTML页面中。创建一个templates文件夹,并在其中添加一个名为index.html的文件:

<!-- templates/index.html --><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>{{ title }}</title>
</head>
<body><h1>{{ message }}</h1>
</body>
</html>

然后修改Flask应用:

from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')
def index():return render_template('index.html', title='Flask Template Example', message='Hello, Flask!')

运行应用,访问http://localhost:5000,将看到HTML页面被动态渲染。

4. 表单处理

在Web应用中,表单是用户与后端交互的重要手段。使用Flask-WTF插件,可以更轻松地处理表单。

首先安装插件:

pip install Flask-WTF

然后,示例代码:

from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitFieldapp = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'class MyForm(FlaskForm):name = StringField('Name')submit = SubmitField('Submit')@app.route('/form', methods=['GET', 'POST'])
def form_example():form = MyForm()if form.validate_on_submit():return f'Hello, {form.name.data}!'return render_template('form_example.html', form=form)

创建一个form_example.html模板:

<!-- templates/form_example.html --><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Form Example</title>
</head>
<body><h1>Form Example</h1><form method="POST" action="">{{ form.hidden_tag() }}<label for="name">Name:</label>{{ form.name(size=20) }}{{ form.submit() }}</form>
</body>
</html>

运行应用,访问http://localhost:5000/form,将看到一个简单的表单。

5. 数据库集成

Flask-SQLAlchemy是一个方便的SQLAlchemy扩展,用于在Flask应用中进行数据库操作。

以下是一个简单的例子:

首先安装SQLAlchemy和Flask-SQLAlchemy:

pip install Flask-SQLAlchemy SQLAlchemy

然后,示例代码:

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(20), unique=True, nullable=False)@app.route('/users')
def users():all_users = User.query.all()return render_template('users.html', users=all_users)

创建一个users.html模板:

<!-- templates/users.html --><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>User List</title>
</head>
<body><h1>User List</h1><ul>{% for user in users %}<li>{{ user.username }}</li>{% endfor %}</ul>
</body>
</html>

运行应用,访问http://localhost:5000/users,将看到用户列表。

总结

本文深入介绍了Python Flask框架的各个方面,包括基本用法、路由与视图函数、模板引擎、表单处理以及数据库集成。Flask的简洁和灵活性使其成为一个理想的Web开发框架,适用于从小型项目到大型应用的各种场景。通过深入学习这些示例代码,可以更好地理解和应用Flask框架,从而构建出高效、可维护的Web应用。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com

干货笔记整理

  100个爬虫常见问题.pdf ,太全了!

Python 自动化运维 100个常见问题.pdf

Python Web 开发常见的100个问题.pdf

124个Python案例,完整源代码!

PYTHON 3.10中文版官方文档

耗时三个月整理的《Python之路2.0.pdf》开放下载

最经典的编程教材《Think Python》开源中文版.PDF下载

8d1fb3102ce1d091f2837c3fff64f80b.png

相关文章:

  • 一键云端,AList 整合多网盘,轻松管理文件多元共享
  • jbase打印导出实现
  • TCP/IP详解卷一第三章“链路层”概要总结(未完编辑中)
  • 【ES6标准入门】JavaScript中的模块Module语法的使用细节:export命令和imprt命令详细使用,超级详细!!!
  • QQ五毛项目记
  • openGauss学习笔记-126 openGauss 数据库管理-设置账本数据库-归档账本数据库
  • [acwing周赛复盘] 第 94 场周赛20230311
  • 解决:微软在登录时总是弹出需要家长或监护人同意才能使用该账户并且不断循环?
  • Elasticsearch:检索增强生成 (Retrieval Augmented Generation -RAG)
  • Spring 事务和事务传播机制
  • 2023年第九届数维杯国际大学生数学建模挑战赛
  • 一文图解爬虫_姊妹篇(spider)
  • 推介会如何做好媒体宣传
  • alias linux 命令别名使用
  • 数字化转型具体包含哪些内容?
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • ➹使用webpack配置多页面应用(MPA)
  • Apache Pulsar 2.1 重磅发布
  • Docker: 容器互访的三种方式
  • github指令
  • httpie使用详解
  • JAVA_NIO系列——Channel和Buffer详解
  • Java读取Properties文件的六种方法
  • js 实现textarea输入字数提示
  • MaxCompute访问TableStore(OTS) 数据
  • Node + FFmpeg 实现Canvas动画导出视频
  • nodejs:开发并发布一个nodejs包
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • PHP那些事儿
  • Promise面试题2实现异步串行执行
  • sessionStorage和localStorage
  • Spark学习笔记之相关记录
  • SpringBoot几种定时任务的实现方式
  • Vim 折腾记
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 数组的操作
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • ​TypeScript都不会用,也敢说会前端?
  • ​学习一下,什么是预包装食品?​
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (11)MSP430F5529 定时器B
  • (C++17) optional的使用
  • (办公)springboot配置aop处理请求.
  • (分类)KNN算法- 参数调优
  • (接口自动化)Python3操作MySQL数据库
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (四) Graphivz 颜色选择
  • .md即markdown文件的基本常用编写语法
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .Net IE10 _doPostBack 未定义
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET 命令行参数包含应用程序路径吗?
  • .net开发时的诡异问题,button的onclick事件无效