Python做Web开发?Flask入门教程详解
时间:2025-07-30 18:51:46 256浏览 收藏
想用Python做Web开发?不妨试试Flask!这篇教程将带你快速上手这个轻量级的微框架。Flask以其精简的核心功能和高度的可扩展性,成为初学者和小型项目的理想选择。它不仅提供了构建Web应用所需的基本工具,还允许开发者按需添加功能,避免被庞大框架所束缚。通过几个简单的步骤,你就能快速搭建一个可运行的网站原型。教程还将详细讲解如何使用Jinja2模板引擎处理HTML,以及如何通过GET和POST请求处理表单提交,利用request对象获取数据,并推荐使用redirect避免重复提交,助你快速验证想法和构建API服务。无论你是Web开发新手,还是希望快速启动项目,Flask都将是你得力的助手。
Flask适合初学者和小型项目因为它轻量且灵活,1. 它是一个微框架,核心功能精简,提供构建Web应用的基本工具;2. 高度可扩展,允许开发者按需添加功能,避免被庞大框架束缚;3. 快速启动项目,通过几个简单步骤即可搭建网站原型;4. 使用Jinja2模板引擎处理HTML,支持变量替换和逻辑嵌入,同时约定templates和static文件夹管理模板和静态资源;5. 处理表单提交时支持GET和POST请求,通过request对象获取数据,并推荐使用redirect避免重复提交,适合快速验证想法和构建API服务。
Python进行Web开发,尤其对于快速启动项目或初学者而言,Flask是一个非常值得考虑的选择。它是一个轻量级的微框架,核心功能精简,但提供了构建Web应用所需的基本工具,并且高度可扩展。这意味着你可以很快地搭建起一个能跑起来的网站,然后根据需要逐步添加更多功能,而不是一开始就被一个庞大的框架所束缚。

解决方案
要用Flask快速开始Web开发,你只需要几个简单的步骤:
首先,确保你的Python环境已经安装了Flask。如果没有,打开终端或命令提示符,输入:

pip install Flask
接下来,创建一个Python文件,比如 app.py
,然后写入以下代码:
from flask import Flask, render_template, request, redirect, url_for # 创建一个Flask应用实例 app = Flask(__name__) # 定义一个路由,当用户访问根URL (/) 时触发 @app.route('/') def index(): # 返回一个简单的字符串作为响应 return "Hello, 这是我的第一个Flask应用!" # 定义一个处理表单提交的路由 @app.route('/submit_form', methods=['GET', 'POST']) def submit_form(): if request.method == 'POST': user_input = request.form.get('my_input_field') # 在这里可以处理用户输入,比如保存到数据库 print(f"用户提交了: {user_input}") return redirect(url_for('success_page', data=user_input)) # 重定向到成功页面 return render_template('form.html') # 如果是GET请求,显示表单 # 定义一个成功页面 @app.route('/success') def success_page(): data = request.args.get('data', '没有数据') return f"提交成功!你输入的是: {data}" # 运行应用 if __name__ == '__main__': # 开启调试模式,这样代码修改后服务器会自动重启 # 在生产环境中,应该关闭 debug=True app.run(debug=True)
为了让 submit_form
路由能正常工作,你还需要一个HTML模板文件。在 app.py
同级目录下创建一个名为 templates
的文件夹,然后在 templates
文件夹里创建一个 form.html
文件:

Flask表单示例 请提交你的信息
保存所有文件后,回到终端,进入到 app.py
所在的目录,运行:
python app.py
你应该会看到类似 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
的输出。在浏览器中访问 http://127.0.0.1:5000/
就能看到你的第一个Flask应用了。访问 http://127.0.0.1:5000/submit_form
则能看到表单。
Flask为什么适合初学者或小型项目?
Flask之所以常常被推荐给初学者或者用于构建小型、原型项目,核心在于它的“微”框架哲学。它不像Django那样,一上来就给你一个大而全的解决方案,包含了ORM(对象关系映射)、管理后台、表单处理等几乎所有东西。Flask则不然,它只提供了一个Web应用运行的骨架,也就是路由和请求处理。
这种极简主义带来了巨大的灵活性和学习曲线的平缓。作为开发者,你可以自由选择你喜欢的数据库工具(SQLAlchemy、Peewee,甚至直接用原生的DB API),模板引擎(虽然默认是Jinja2,但你也可以换),以及其他任何你需要的第三方库。这意味着你不需要为了适应框架而学习一大堆预设好的组件,可以专注于你的核心业务逻辑。我个人觉得,这种“不干涉”的哲学让人感到非常自由,尤其是在你需要快速验证一个想法或者构建一个API服务时,Flask能够让你以最快的速度看到成果。它不会强迫你遵循某种固定的项目结构,你可以根据自己的习惯和项目需求来组织代码。
如何在Flask应用中处理HTML模板和静态文件?
在Web开发中,页面通常不只是简单的字符串,而是带有样式和交互的HTML文件,可能还会包含CSS、JavaScript和图片等静态资源。Flask对此有一套非常直观的处理方式。
对于HTML模板,Flask默认使用Jinja2模板引擎。你需要做的是在你的应用根目录下创建一个名为 templates
的文件夹。所有的HTML模板文件都放在这个文件夹里。当你在视图函数中需要渲染一个HTML文件时,就使用 render_template()
函数,例如 return render_template('index.html')
。Jinja2的强大之处在于它允许你在HTML中嵌入Python逻辑,比如循环、条件判断,以及最常用的变量替换 {{ variable_name }}
。我记得刚开始学习的时候,总是会忘记 templates
这个文件夹的名字是约定俗成的,一旦知道了这个约定,整个模板渲染的流程就变得非常顺畅了。
而静态文件,比如CSS样式表、JavaScript脚本或图片,则需要放在一个名为 static
的文件夹里,同样位于应用根目录。在HTML模板中引用这些静态文件时,你需要使用 url_for()
函数来生成正确的URL,例如 。这样做的好处是,即使你的应用部署在不同的路径下,Flask也能正确地找到这些静态文件,避免了硬编码路径可能带来的问题。这种方式让前端资源的管理变得非常清晰和模块化。
Flask应用如何实现数据交互和表单提交?
Web应用的核心功能之一就是与用户进行数据交互,最常见的方式就是通过表单提交数据。在Flask中,处理HTTP请求(包括GET和POST)和获取表单数据是相当直接的。
当用户通过浏览器访问一个URL时,通常发起的是一个GET请求,用于获取资源(比如显示一个页面)。当用户填写表单并点击提交按钮时,通常发起的是一个POST请求,用于将数据发送到服务器。在Flask中,你可以在路由装饰器 @app.route()
中通过 methods
参数指定该路由支持的HTTP方法,比如 @app.route('/submit', methods=['GET', 'POST'])
。
要获取用户通过表单提交的数据,Flask提供了一个全局的 request
对象。这个对象包含了当前请求的所有信息,包括表单数据、查询参数、请求头等等。对于POST请求提交的表单数据,你可以通过 request.form
字典来访问,例如 username = request.form['username']
。如果字段可能不存在,使用 request.form.get('username')
会更安全,因为它会在字段不存在时返回 None
而不是抛出错误。
处理完表单数据后,一个常见的最佳实践是执行重定向(Redirect-After-POST)。这意味着在成功处理POST请求后,你应该使用 redirect(url_for('some_success_route'))
将用户重定向到一个新的页面,而不是直接渲染当前页面。这样做可以有效避免用户刷新页面时重复提交表单的问题,提升用户体验。我刚开始写表单的时候,就经常遇到这个问题,用户一刷新页面就又提交一次,导致数据重复。学会使用 redirect
之后,这个问题就迎刃而解了。当然,在实际项目中,你还需要考虑数据验证、错误处理,比如用户输入是否符合预期格式、是否为空等等,虽然Flask本身不强制,但你可以很方便地集成WTForms等库来增强这方面的能力。
今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
109 收藏
-
364 收藏
-
188 收藏
-
154 收藏
-
174 收藏
-
278 收藏
-
197 收藏
-
223 收藏
-
222 收藏
-
155 收藏
-
257 收藏
-
343 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 511次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 498次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习