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

06-25 13阅读

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

目录[+]

您是本站第564名访客 今日有42篇新文章

微信号复制成功

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