当前位置:首页 > 文章列表 > 文章 > python教程 > Python做Web开发?Flask入门教程详解

Python做Web开发?Flask入门教程详解

2025-07-30 18:51:46 0浏览 收藏

想用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快速入门

Python进行Web开发,尤其对于快速启动项目或初学者而言,Flask是一个非常值得考虑的选择。它是一个轻量级的微框架,核心功能精简,但提供了构建Web应用所需的基本工具,并且高度可扩展。这意味着你可以很快地搭建起一个能跑起来的网站,然后根据需要逐步添加更多功能,而不是一开始就被一个庞大的框架所束缚。

Python如何做Web开发?Flask快速入门

解决方案

要用Flask快速开始Web开发,你只需要几个简单的步骤:

首先,确保你的Python环境已经安装了Flask。如果没有,打开终端或命令提示符,输入:

Python如何做Web开发?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 文件:

Python如何做Web开发?Flask快速入门
<!-- templates/form.html -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flask表单示例</title>
</head>
<body>
    <h1>请提交你的信息</h1>
    <form action="/submit_form" method="post">
        <label for="my_input_field">输入一些内容:</label><br>
        &lt;input type=&quot;text&quot; id=&quot;my_input_field&quot; name=&quot;my_input_field&quot;&gt;<br><br>
        &lt;input type=&quot;submit&quot; value=&quot;提交&quot;&gt;
    </form>
</body>
</html>

保存所有文件后,回到终端,进入到 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学习网公众号,一起学习编程~

ApacheCamel无输出路由测试技巧ApacheCamel无输出路由测试技巧
上一篇
ApacheCamel无输出路由测试技巧
JavaScript空值合并默认值技巧
下一篇
JavaScript空值合并默认值技巧
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    514次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    499次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • SEO  AI Mermaid 流程图:自然语言生成,文本驱动可视化创作
    AI Mermaid流程图
    SEO AI Mermaid 流程图工具:基于 Mermaid 语法,AI 辅助,自然语言生成流程图,提升可视化创作效率,适用于开发者、产品经理、教育工作者。
    74次使用
  • 搜获客笔记生成器:小红书医美爆款内容AI创作神器
    搜获客【笔记生成器】
    搜获客笔记生成器,国内首个聚焦小红书医美垂类的AI文案工具。1500万爆款文案库,行业专属算法,助您高效创作合规、引流的医美笔记,提升运营效率,引爆小红书流量!
    44次使用
  • iTerms:一站式法律AI工作台,智能合同审查起草与法律问答专家
    iTerms
    iTerms是一款专业的一站式法律AI工作台,提供AI合同审查、AI合同起草及AI法律问答服务。通过智能问答、深度思考与联网检索,助您高效检索法律法规与司法判例,告别传统模板,实现合同一键起草与在线编辑,大幅提升法律事务处理效率。
    80次使用
  • TokenPony:AI大模型API聚合平台,一站式接入,高效稳定高性价比
    TokenPony
    TokenPony是讯盟科技旗下的AI大模型聚合API平台。通过统一接口接入DeepSeek、Kimi、Qwen等主流模型,支持1024K超长上下文,实现零配置、免部署、极速响应与高性价比的AI应用开发,助力专业用户轻松构建智能服务。
    12次使用
  • 迅捷AIPPT:AI智能PPT生成器,高效制作专业演示文稿
    迅捷AIPPT
    迅捷AIPPT是一款高效AI智能PPT生成软件,一键智能生成精美演示文稿。内置海量专业模板、多样风格,支持自定义大纲,助您轻松制作高质量PPT,大幅节省时间。
    66次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码