使用 Python 构建一个简单的 Web 应用程序
在当今的软件开发领域,Web 应用程序已经成为不可或缺的一部分。无论是企业级应用还是个人项目,使用现代编程语言和框架快速搭建一个功能齐全的 Web 应用都是可能的。Python 以其简洁、易读的语法以及丰富的生态系统,成为构建 Web 应用的理想选择。
在本文中,我们将使用 Python 的 Flask 框架来创建一个简单的 Web 应用程序。该应用将包括以下几个功能:
展示主页接收用户输入并返回处理结果使用模板引擎渲染动态页面简单的数据存储(内存中)环境准备
首先,确保你的系统中安装了 Python(建议使用 Python 3.7 或更高版本)。然后,安装 Flask:
pip install Flask
如果你打算使用数据库,可以考虑安装 SQLAlchemy:
pip install Flask-SQLAlchemy
但为了简化演示,我们将在本例中只使用内存中的数据结构进行存储。
创建项目结构
我们的项目结构如下:
my_flask_app/│├── app.py├── templates/│ ├── index.html│ └── result.html└── README.md
其中:
app.py
是主程序文件;templates/
文件夹存放 HTML 页面模板;README.md
可以用于说明项目信息。编写主程序代码
打开 app.py
,输入以下内容:
from flask import Flask, render_template, request, redirect, url_forapp = Flask(__name__)# 临时存储用户提交的数据comments = []@app.route('/')def index(): return render_template('index.html')@app.route('/submit', methods=['POST'])def submit(): user_input = request.form['comment'] if user_input: comments.append(user_input) return redirect(url_for('result'))@app.route('/result')def result(): return render_template('result.html', comments=comments)if __name__ == '__main__': app.run(debug=True)
这段代码定义了一个 Flask 应用,包含三个路由:
/
: 主页,显示欢迎信息。/submit
: 处理表单提交,并将用户输入添加到列表中。/result
: 显示所有已提交的内容。创建 HTML 模板
Flask 默认使用 Jinja2 模板引擎。我们需要在 templates/
目录下创建两个 HTML 文件。
index.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>首页</title></head><body> <h1>欢迎来到我的网站!</h1> <form action="/submit" method="post"> <label for="comment">请输入您的评论:</label><br> <textarea id="comment" name="comment"></textarea><br> <button type="submit">提交</button> </form></body></html>
result.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>结果页面</title></head><body> <h1>已提交的评论:</h1> {% if comments %} <ul> {% for comment in comments %} <li>{{ comment }}</li> {% endfor %} </ul> {% else %} <p>暂无评论。</p> {% endif %} <a href="/">返回首页</a></body></html>
运行应用
在终端中进入项目目录,运行:
python app.py
默认情况下,Flask 会在 http://127.0.0.1:5000/
启动开发服务器。你可以通过浏览器访问该地址查看效果。
添加样式与增强交互(可选)
为了让页面更美观,我们可以引入 CSS 样式。例如,在 templates/index.html
中加入 <style>
标签或链接外部 CSS 文件:
<style> body { font-family: Arial, sans-serif; margin: 40px; } textarea { width: 300px; height: 100px; } ul { list-style-type: none; padding-left: 0; } li { background-color: #f0f0f0; margin-bottom: 10px; padding: 10px; border-radius: 5px; }</style>
你也可以使用 JavaScript 来增强前端交互,比如实时预览用户输入内容等。
数据持久化(进阶)
目前我们的数据是保存在内存中的,重启服务后会丢失。如果希望数据持久化,可以使用 SQLite 数据库。这里简单展示如何集成 SQLAlchemy:
修改 app.py
开头部分如下:
from flask import Flask, render_template, request, redirect, url_forfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'db = SQLAlchemy(app)class Comment(db.Model): id = db.Column(db.Integer, primary_key=True) content = db.Column(db.String(200), nullable=False)@app.before_first_requestdef create_tables(): db.create_all()
然后更新 /submit
和 /result
路由:
@app.route('/submit', methods=['POST'])def submit(): user_input = request.form['comment'] if user_input: new_comment = Comment(content=user_input) db.session.add(new_comment) db.session.commit() return redirect(url_for('result'))@app.route('/result')def result(): all_comments = Comment.query.all() return render_template('result.html', comments=all_comments)
最后,在 result.html
中显示数据库记录:
<li>{{ comment.content }}</li>
这样,即使重启服务器,评论数据也不会丢失。
总结
通过本文,我们学习了如何使用 Python 和 Flask 构建一个简单的 Web 应用程序,涵盖了基本的路由设置、表单处理、模板渲染和数据持久化等内容。Flask 提供了轻量级但强大的工具集,非常适合初学者入门 Web 开发。
当然,这只是一个基础示例。实际开发中,还需要考虑安全性(如防止 XSS 攻击)、用户认证、错误处理、性能优化等多个方面。希望你能以此为起点,继续深入探索 Web 开发的世界!
完整源码地址:
你可以将上述代码整理成一个完整的项目,上传至 GitHub 或其他平台。例如,GitHub 地址可能是:
https://github.com/yourname/flask-sample-app
如果你有进一步的需求,例如部署到生产环境、使用 Docker 容器化、或者使用前端框架如 React/Vue 配合 Flask 做前后端分离架构,也欢迎继续提问,我可以为你提供详细指导。