使用Python构建一个简单的Web应用:从零开始的技术实践
在现代软件开发中,Web 应用程序已经成为最主流的应用形式之一。无论是企业系统、电商平台还是个人博客,都可以通过 Web 技术实现。本文将带领读者使用 Python 构建一个简单的 Web 应用,并结合实际代码演示如何一步步搭建和部署。
我们将使用 Flask 框架来完成这个项目。Flask 是一个轻量级的 Python Web 框架,非常适合初学者入门 Web 开发。
准备工作
1. 安装 Python 环境
确保你的电脑上安装了 Python 3.6 或以上版本。可以通过以下命令查看当前 Python 版本:
python --version
如果未安装,请前往 Python官网 下载并安装。
2. 安装 Flask
使用 pip 安装 Flask:
pip install flask
创建第一个 Flask 应用
我们先从一个最基础的 Hello World 示例开始,理解 Flask 的基本结构。
文件结构
myapp/│├── app.py└── templates/ └── index.html
编写 app.py
from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')def home(): return "Hello, Flask!"if __name__ == '__main__': app.run(debug=True)
运行该程序:
python app.py
访问 http://127.0.0.1:5000/,你将看到页面显示 "Hello, Flask!"。
加入模板引擎(Jinja2)
Flask 默认集成了 Jinja2 模板引擎。我们可以使用 HTML 模板来渲染动态内容。
创建模板文件 templates/index.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Flask 示例</title></head><body> <h1>{{ message }}</h1></body></html>
修改 app.py
以渲染模板
from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')def home(): return render_template('index.html', message='欢迎来到 Flask 应用!')if __name__ == '__main__': app.run(debug=True)
刷新页面,你现在应该能看到一个带有标题的网页。
添加表单处理功能
接下来我们将实现一个简单的用户输入功能。例如,用户输入名字后提交,页面返回问候语。
新增路由和模板
修改 app.py
from flask import Flask, render_template, requestapp = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home(): if request.method == 'POST': name = request.form['name'] return f'你好,{name}!' return render_template('index.html')if __name__ == '__main__': app.run(debug=True)
修改 templates/index.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Flask 表单示例</title></head><body> <form method="post"> <label for="name">请输入你的名字:</label> <input type="text" id="name" name="name"> <button type="submit">提交</button> </form></body></html>
现在你可以输入名字并提交,页面会显示“你好,XXX!”。
连接数据库(SQLite)
为了使应用更完整,我们将加入 SQLite 数据库支持,用于存储用户提交的数据。
安装 SQLite 支持
无需额外安装,Python 标准库中已包含 SQLite 模块 sqlite3
。
初始化数据库
新建 init_db.py
:
import sqlite3conn = sqlite3.connect('users.db')cursor = conn.cursor()cursor.execute(''' CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL )''')conn.commit()conn.close()
运行一次:
python init_db.py
这将在当前目录下生成一个名为 users.db
的数据库文件。
修改 app.py
插入数据
from flask import Flask, render_template, requestimport sqlite3app = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home(): if request.method == 'POST': name = request.form['name'] # 插入数据到数据库 conn = sqlite3.connect('users.db') cursor = conn.cursor() cursor.execute('INSERT INTO users (name) VALUES (?)', (name,)) conn.commit() conn.close() return f'你好,{name}!你的信息已被记录。' return render_template('index.html')if __name__ == '__main__': app.run(debug=True)
展示所有用户
我们可以新增一个页面 /users
来展示所有已经提交过的用户。
修改 app.py
@app.route('/users')def list_users(): conn = sqlite3.connect('users.db') cursor = conn.cursor() cursor.execute('SELECT * FROM users') users = cursor.fetchall() conn.close() return render_template('users.html', users=users)
创建 templates/users.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>用户列表</title></head><body> <h1>所有用户</h1> <ul> {% for user in users %} <li>ID: {{ user[0] }}, 名字: {{ user[1] }}</li> {% endfor %} </ul></body></html>
访问 http://127.0.0.1:5000/users,可以看到所有提交过的名字。
部署到生产环境
虽然 Flask 自带的开发服务器非常方便,但它不适合用于生产环境。我们可以使用 Gunicorn + Nginx 来部署应用。
1. 安装 Gunicorn
pip install gunicorn
2. 启动 Gunicorn
gunicorn -w 4 app:app
其中 -w 4
表示启动 4 个工作进程,app:app
表示模块名和实例名。
3. 配置 Nginx 反向代理
编辑 Nginx 配置文件:
server { listen 80; server_name yourdomain.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }}
重启 Nginx:
sudo systemctl restart nginx
这样你的 Flask 应用就可以在公网访问了。
总结
通过本文的学习,我们完成了以下工作:
使用 Flask 搭建了一个简单的 Web 应用;实现了基本的页面渲染和表单提交;连接了 SQLite 数据库进行数据持久化;展示了用户数据;并介绍了如何将其部署到生产环境中。当然,这只是 Web 开发的冰山一角。随着需求的增长,你可能需要引入更多高级特性,如身份验证、RESTful API、前端框架集成等。希望这篇文章能为你打开通往 Web 开发世界的大门!
附录:完整代码仓库
你可以将上述所有代码整理成一个项目目录,便于后续维护与扩展。建议使用 Git 进行版本控制,如下是一个 .gitignore
示例:
*.pyc__pycache__env/*.db*.log
Happy coding! 🚀