使用Python构建一个简单的Web应用:从零开始的技术实践

今天 3阅读

在现代软件开发中,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! 🚀

免责声明:本文来自网站作者,不代表CIUIC的观点和立场,本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。客服邮箱:ciuic@ciuic.com

目录[+]

您是本站第24517名访客 今日有17篇新文章

微信号复制成功

打开微信,点击右上角"+"号,添加朋友,粘贴微信号,搜索即可!