使用Python构建一个简单的Web应用:Flask入门指南
在现代软件开发中,Web 应用程序已经成为不可或缺的一部分。Python 作为一种功能强大且易于学习的编程语言,在 Web 开发领域也有着广泛的应用。其中,Flask 是一个轻量级的 Web 框架,非常适合初学者入门和小型项目的快速开发。
本文将带你从零开始,使用 Flask 构建一个简单的 Web 应用程序,并包含完整的代码示例。我们还将介绍一些基本的 Web 开发概念,如路由、模板渲染、表单处理等。
环境准备
在开始之前,请确保你的系统上安装了以下工具:
Python 3.x(推荐 3.8 及以上)pip(Python 的包管理器)文本编辑器或 IDE(如 VS Code、PyCharm)你可以通过终端运行以下命令来检查 Python 是否已安装:
python --version
接下来,我们需要安装 Flask:
pip install Flask
创建第一个 Flask 应用
我们将创建一个名为 hello_flask.py
的文件,并编写如下代码:
from flask import Flaskapp = Flask(__name__)@app.route('/')def home(): return "Hello, Flask!"if __name__ == '__main__': app.run(debug=True)
代码解析:
Flask(__name__)
:创建 Flask 应用实例。@app.route('/')
:定义路由,当访问根路径 /
时,调用 home()
函数。app.run(debug=True)
:启动开发服务器,debug=True
表示启用调试模式。运行该脚本:
python hello_flask.py
打开浏览器访问 http://127.0.0.1:5000,你会看到页面显示:
Hello, Flask!
使用模板渲染 HTML 页面
Flask 支持 Jinja2 模板引擎,可以方便地将动态数据嵌入到 HTML 页面中。
步骤:
在项目目录下创建一个名为templates
的文件夹。在 templates
中创建 index.html
文件:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Flask 教程</title></head><body> <h1>欢迎来到 Flask 示例网站</h1> <p>当前时间是:{{ current_time }}</p></body></html>
修改 hello_flask.py
:from flask import Flask, render_templateimport datetimeapp = Flask(__name__)@app.route('/')def home(): now = datetime.datetime.now() current_time = now.strftime("%Y-%m-%d %H:%M:%S") return render_template('index.html', current_time=current_time)if __name__ == '__main__': app.run(debug=True)
现在刷新网页,你会看到当前时间被动态显示出来。
处理表单提交
接下来我们实现一个简单的登录表单,演示如何处理 POST 请求。
1. 创建登录页面模板 login.html
:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>登录</title></head><body> <h3>请登录</h3> <form method="POST" action="/login"> 用户名:<input type="text" name="username"><br><br> 密码:<input type="password" name="password"><br><br> <input type="submit" value="登录"> </form></body></html>
2. 创建登录成功页面 success.html
:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>登录成功</title></head><body> <h3>欢迎你,{{ username }}!</h3></body></html>
3. 修改 hello_flask.py
添加处理逻辑:
from flask import Flask, render_template, request, redirect, url_forapp = Flask(__name__)@app.route('/login', methods=['GET', 'POST'])def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] # 简单验证(实际应使用数据库和加密) if username == 'admin' and password == '123456': return redirect(url_for('success', username=username)) else: return "登录失败,请重试" return render_template('login.html')@app.route('/success/<username>')def success(username): return render_template('success.html', username=username)if __name__ == '__main__': app.run(debug=True)
访问 http://127.0.0.1:5000/login 进行测试。
添加静态资源支持
为了让网站更美观,我们可以添加 CSS 样式。
创建static
文件夹。在其中添加 style.css
文件:body { font-family: Arial, sans-serif; background-color: #f0f0f0; color: #333; padding: 20px;}h1, h3 { color: #0066cc;}
修改 login.html
和 success.html
,在 <head>
中引入样式:<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
重启服务后查看效果。
部署 Flask 应用
虽然 Flask 自带的开发服务器适合本地测试,但不适合生产环境。常见的部署方式包括:
使用 Gunicorn + Nginx部署到云平台如 Heroku、Render、Vercel 等以 Gunicorn 为例:
pip install gunicorngunicorn hello_flask:app
总结
通过本文的学习,你应该已经掌握了以下内容:
如何使用 Flask 创建 Web 应用路由的基本使用方法模板渲染与变量传递表单提交与处理静态资源的加载基础部署方案Flask 是一个非常灵活和强大的框架,适合各种规模的 Web 应用开发。后续你可以继续学习更多高级特性,例如:
数据库集成(如 SQLite、SQLAlchemy)用户认证(如 Flask-Login)RESTful API 设计单元测试与部署流程自动化希望这篇文章能帮助你迈出 Web 开发的第一步!
如果你对这个主题感兴趣,欢迎继续关注我的技术博客系列文章,我将持续分享更多实用的技术干货。