使用 Python 构建一个简单的 Web 应用:从零开始的 Flask 入门指南
在现代软件开发中,Web 应用已经成为主流。无论你是想构建一个个人博客、企业官网,还是一个复杂的后端服务,掌握 Web 开发技术都是必不可少的技能之一。Python 以其简洁优雅的语法和丰富的库支持,在 Web 开发领域也占据了一席之地。
本篇文章将带你使用 Python 的轻量级 Web 框架 Flask,从零开始构建一个简单的 Web 应用程序。我们将通过实际代码演示如何创建一个包含主页、关于页面以及用户输入处理的基本网站。整个过程不需要太多前端知识,适合刚入门 Web 开发的新手。
什么是 Flask?
Flask 是一个基于 Python 的微框架,它非常轻量,但功能齐全,非常适合快速开发小型到中型的 Web 应用。Flask 不像 Django 那样内置了 ORM、认证系统等完整功能,但它灵活易用,适合学习和快速原型开发。
准备工作
1. 安装 Python 环境
确保你的计算机上安装了 Python 3.6 或更高版本。可以通过命令行检查:
python --version
或
python3 --version
2. 安装 Flask
我们推荐使用虚拟环境来管理项目依赖。首先创建并激活虚拟环境:
python -m venv venvsource venv/bin/activate # Linux/macOSvenv\Scripts\activate # Windows
然后安装 Flask:
pip install flask
构建第一个 Flask 应用
我们将构建一个包含三个页面的简单网站:
主页/
关于页 /about
表单提交页 /greet
1. 项目结构
my_flask_app/│├── app.py└── templates/ ├── index.html └── about.html
2. 编写主程序 app.py
from flask import Flask, render_template, requestapp = Flask(__name__)@app.route('/')def home(): return render_template('index.html')@app.route('/about')def about(): return render_template('about.html')@app.route('/greet', methods=['GET', 'POST'])def greet(): if request.method == 'POST': name = request.form.get('name') return f"Hello, {name}!" return ''' <form method="post"> Name: <input type="text" name="name"><br> <input type="submit" value="Submit"> </form> '''if __name__ == '__main__': app.run(debug=True)
3. 创建模板文件
在 templates
文件夹中创建两个 HTML 文件:
index.html
<!DOCTYPE html><html><head> <title>Home Page</title></head><body> <h1>Welcome to My Website!</h1> <p>This is the homepage of our Flask application.</p> <ul> <li><a href="/">Home</a></li> <li><a href="/about">About</a></li> <li><a href="/greet">Greet Me</a></li> </ul></body></html>
about.html
<!DOCTYPE html><html><head> <title>About Us</title></head><body> <h1>About This Project</h1> <p>This website was built using Flask and Python as part of a learning tutorial.</p> <a href="/">Back to Home</a></body></html>
运行应用
在终端中进入项目目录,运行:
python app.py
你会看到类似输出:
* Running on http://127.0.0.1:5000/
打开浏览器访问以下地址:
http://localhost:5000 —— 主页http://localhost:5000/about —— 关于页http://localhost:5000/greet —— 输入名字打招呼进阶内容:使用 Jinja2 模板继承
为了减少重复代码,我们可以使用 Flask 内置的 Jinja2 模板引擎提供的“继承”功能。创建一个基础模板 base.html
,其他页面继承它。
修改模板结构如下:
my_flask_app/│├── app.py└── templates/ ├── base.html ├── index.html └── about.html
base.html
<!DOCTYPE html><html><head> {% block title %}<title>My Flask Site</title>{% endblock %}</head><body> <nav> <a href="/">Home</a> | <a href="/about">About</a> | <a href="/greet">Greet</a> </nav> <hr> {% block content %}{% endblock %}</body></html>
修改 index.html
{% extends "base.html" %}{% block title %}<title>Home Page</title>{% endblock %}{% block content %}<h1>Welcome to My Website!</h1><p>This is the homepage of our Flask application.</p>{% endblock %}
修改 about.html
{% extends "base.html" %}{% block title %}<title>About Us</title>{% endblock %}{% block content %}<h1>About This Project</h1><p>This website was built using Flask and Python as part of a learning tutorial.</p>{% endblock %}
重启服务器后,你会发现导航栏统一了,且代码更易于维护。
部署你的 Flask 应用(可选)
如果你想让别人也能访问你的网站,可以考虑将其部署到云服务器或 PaaS 平台上。常用的有:
HerokuRenderPythonAnywhere以 Heroku 为例,你需要创建一个 Procfile
和 requirements.txt
:
pip freeze > requirements.txt
Procfile
内容为:
web: python app.py
然后使用 Heroku CLI 部署即可。
总结
本文通过一个完整的示例,介绍了如何使用 Flask 构建一个简单的 Web 应用。我们涵盖了:
Flask 基础路由配置模板渲染与表单处理模板继承机制简单部署方式虽然这个项目还很基础,但它为你打开了通往更复杂 Web 开发的大门。接下来你可以尝试集成数据库(如 SQLite)、实现用户登录系统、使用蓝图(Blueprint)组织项目结构等。
如果你对这个方向感兴趣,不妨继续深入学习 Flask 或转向全栈框架如 Django,进一步提升你的 Web 开发能力!
附录:完整源码仓库参考
你可以将上述所有代码整理成一个 GitHub 项目用于练习和分享。例如:
git initgit add .git commit -m "Initial commit"
上传至 GitHub 后即可作为你自己的开源作品展示。
作者信息:
技术博客:example.com/blogGitHub:@yourgithub如需进一步交流,请留言或发送邮件至 your@email.com。