Python Web 开发之 Flask 入门实践

导语:Flask 是一个轻量级的 Python Web 框架,广受开发者喜爱。本文将带领大家了解 Flask 的基本概念、搭建一个简单的 Web 项目以及如何进一步扩展功能。

一、Flask 简介

Flask 是一个基于 Werkzeug 和 Jinja2 的微型 Web 框架,它的特点是轻量、易学习、可扩展。使用 Flask,我们可以快速构建 Web 应用程序,进行 RESTful API 开发等。

二、环境搭建

首先,我们需要安装 Flask:

pip install flask

接下来,创建一个简单的 Flask 应用:

# app.py
from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, World!'if __name__ == '__main__':app.run(debug=True)

运行 app.py:

python app.py

在浏览器中访问 http://127.0.0.1:5000/,您将看到 “Hello, World!”。

三、路由与视图函数

在 Flask 中,路由与视图函数的关联是通过装饰器 app.route() 实现的。我们可以为不同的 URL 路径定义不同的视图函数。

@app.route('/user/<username>')
def show_user_profile(username):return 'User %s' % username

上面的代码定义了一个带参数的路由,其中 <username> 是 URL 中的变量部分,将作为参数传递给视图函数。

四、模板渲染

Flask 使用 Jinja2 作为模板引擎。我们可以通过 render_template() 函数来渲染模板。

首先,在项目目录中创建一个名为 templates 的文件夹,并创建一个名为 index.html 的模板文件:

<!-- templates/index.html -->
<html><head><title>{{ title }}</title></head><body><h1>Hello, {{ name }}!</h1></body>
</html>

接下来,修改视图函数来渲染模板:

from flask import render_template@app.route('/hello/<name>')
def hello(name):return render_template('index.html', title='Flask Demo', name=name)

五、表单处理与数据库操作

要处理表单数据,我们需要引入 request 对象。此外,我们还可以使用 Flask-SQLAlchemy 扩展来操作数据库。

安装 Flask-SQLAlchemy:

pip install flask-sqlalchemy

创建一个简单的表单模板:

<!-- templates/form.html -->
<form action="/submit" method="post"><label for="name">Name:</label><input type="text" id="name" name="name"><input type="submit" value="Submit">
</form>

配置数据库并创建模型:

from flask_sqlalchemy import SQLAlchemyapp.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///example.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Falsedb = SQLAlchemy(app)class User(db.Model):id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(80), unique=True, nullable=False)def __repr__(self):return '<User %r>' % self.name# Create the database and the table
db.create_all()

现在,我们已经配置好了数据库,并创建了一个简单的 User 模型。接下来,让我们处理表单提交:

from flask import request, redirect, url_for@app.route('/submit', methods=['POST'])
def submit():name = request.form['name']new_user = User(name=name)db.session.add(new_user)db.session.commit()return redirect(url_for('show_users'))

在这里,我们从表单中获取 name,创建一个新的 User 对象并将其添加到数据库。完成后,我们将用户重定向到展示所有用户的页面。

最后,实现 show_users 视图函数:

@app.route('/users')
def show_users():users = User.query.all()return render_template('users.html', users=users)

templates 文件夹中创建一个名为 users.html 的模板文件:

<!-- templates/users.html -->
<ul>
{% for user in users %}<li>{{ user.name }}</li>
{% endfor %}
</ul>

现在,您可以运行应用程序,访问表单页面提交数据,并查看已提交的用户列表。

总结:本文介绍了 Flask 的基本概念、环境搭建、路由与视图函数、模板渲染以及表单处理与数据库操作。这些是 Flask Web 开发的基础内容,掌握这些知识后,您可以进一步学习 Flask 的扩展库和高级特性,构建更复杂的 Web 应用。

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/421636.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA(十)2022版本 Services中服务窗口不显示端口号解决

目录 一、问题描述二、问题分析三、解决方案3.1 设置启动参数【生效】3.2 方法二&#xff1a;设置环境变量【不生效】3.3 方法三&#xff1a;删除缓存【不生效】 四、补充&#xff1a;如何手动控制端口显示 一、问题描述 我们在使用 IDEA 的过程中&#xff0c;会发现在 Servic…

使用 OpenCV 添加(混合)两个图像

目标 在本教程中&#xff0c;您将学习&#xff1a; 什么是线性混合以及为什么它有用;如何使用 addWeighted&#xff08;&#xff09; 添加两个图像 理论 注意 下面的解释属于Richard Szeliski的《计算机视觉&#xff1a;算法和应用》一书 从我们之前的教程中&#xff0c;…

如何在不影响业务的前提下执行大批量数据变更操作?

相信很多 DBA 同学都碰到过这个问题&#xff1a;用一条 DML SQL 语句执行大批量数据更新或删除操作时&#xff08;例如&#xff1a;定期删除过期的数据或清理无效的数据记录&#xff09;&#xff0c;如果不具备适当的索引&#xff0c;一旦单条 SQL 影响的行数过多&#xff0c;正…

从心理学角度看海外网红营销:品牌与消费者的心理互动

近年来&#xff0c;随着社交媒体的蓬勃发展&#xff0c;海外网红营销成为品牌推广的一种独特而有效的手段。这种新型营销方式不仅仅依赖于产品本身的特性&#xff0c;更加注重通过网红与消费者之间的心理互动来建立品牌形象&#xff0c;激发购买欲望。本文Nox聚星将和大家从心理…

SpringCloudConfig+SpringCloudBus+Actuator+Git实现Eureka关键配置属性热更新(全程不重启服务)

文章目录 前言1.痛点2.解决方案3.具体实现3.1搭建热配置服务3.2编写配置文件3.3搭建版本控制仓库3.4Eureka-Client引入以下依赖3.5Eureka-Client微服务编写以下配置bootstrap.yml提前加载3.6分别编写测试Controller3.7测试效果3.8下线场景压测 4.SpringCloudBus优化 前言 在上…

【数据库原理】(38)数据仓库

数据仓库&#xff08;Data Warehouse, DW&#xff09;是为了满足企业决策分析需求而设计的数据环境&#xff0c;它与传统数据库有明显的不同。 一.数据库仓库概述 定义: 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合&#xff0c;用于支持企业管理和…

网络通信(Socket/TCP/UDP)

一、Socket 1.概念: Socket(又叫套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接协议,客户端的IP地址,客户端的端口,服务器的IP地址,服务器的端口。 一个Socket是一对IP地址…

第十回 朱贵水亭施号箭 林冲雪夜上梁山-FreeBSD/Linux 控制台基础操作

林冲被众庄客捉住&#xff0c;吊在门楼下&#xff0c;正被打时&#xff0c;柴进来了&#xff0c;赶快把林冲救下来。原来这是柴进打猎用的小庄子&#xff0c; 林冲就把火烧草料场一事跟柴进详细的说了。柴进说兄弟真是命运多磨难啊。林冲住了几日&#xff0c;恐怕连累柴进&…

Windows主机Navicat远程连接到Ubuntu18.04虚拟机MySQL

1. 在虚拟机上安装MySQL sudo apt-get install mysql-server sudo apt-get install libmysqlclient-dev 2. 检查安装 sudo netstat -tap | grep mysql 3. 查看默认密码 sudo cat /etc/mysql/debian.cnf 4. 用查看到的密码登录MySQL server&#xff0c;修改root用户的密码 …

Win11桌面路径改为其他盘的简单教程

Win11桌面路径改为其他盘的简单教程 ​ 在使用电脑的过程中&#xff0c;桌面文件夹是我们经常会使用到的地方&#xff0c;而默认情况下&#xff0c;桌面文件夹都会存放在系统安装盘的C盘上。随着时间的推移和文件的增多&#xff0c;C盘的磁盘空间可能会越来越紧张&#xff0c;…

短信平台搭建注意什么|网页版短信系统开发源码

短信平台搭建注意什么|网页版短信系统开发源码 短信平台是企业进行市场营销、客户关系管理和即时通讯的重要工具。为了确保短信平台的稳定运行和高效利用&#xff0c;以下是在搭建短信平台时需要注意的几个重要方面。 1. 需求分析&#xff1a;在搭建短信平台之前&#xff0c;需…

变分自编码器VAE模型与应用

变分自编码器&#xff08;VAE&#xff0c;Variational Autoencoder&#xff09;是一种深度学习模型&#xff0c;用于数据生成和特征学习。它结合了自编码器&#xff08;autoencoders&#xff09;和贝叶斯推断。 下面是VAE的详细解释&#xff1a; 自编码器&#xff08;Autoenco…