Python进阶教程:Web开发入门(Flask)

🕒 阅读时间:6 分钟📝 字数:1113👀 阅读量:Loading...

目录

本文是 Python 入门教程系列 的第 9 篇。前面介绍了数据分析,本篇介绍用 Flask 框架快速搭建 Web 应用。

一、Flask 简介

Flask 是 Python 最流行的轻量级 Web 框架:

  • 简单:一个文件即可启动 Web 服务
  • 灵活:可以自由选择组件
  • 生态好:文档丰富,社区庞大

安装:pip install flask

二、第一个 Flask 应用

from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
return "<h1>Hello, Flask!</h1>"
if __name__ == "__main__":
app.run(debug=True) # 启动,访问 http://127.0.0.1:5000

三、路由与参数

from flask import Flask
app = Flask(__name__)
# 普通路由
@app.route("/about")
def about():
return "关于页面"
# 动态参数
@app.route("/user/<name>")
def user(name):
return f"<h1>欢迎,{name}!</h1>"
# 指定请求方法
@app.route("/login", methods=["GET", "POST"])
def login():
return "登录页面"
if __name__ == "__main__":
app.run(debug=True)

四、模板渲染

模板让你在 HTML 中嵌入 Python 变量和逻辑(Jinja2 模板引擎):

from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def home():
return render_template("index.html", title="首页", items=["Python", "Flask", "Web"])
if __name__ == "__main__":
app.run(debug=True)

配套模板文件 templates/index.html:

<!DOCTYPE html>
<html>
<head><title>{{ title }}</title></head>
<body>
<h1>{{ title }}</h1>
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
</body>
</html>

五、处理表单数据

from flask import Flask, request
app = Flask(__name__)
@app.route("/submit", methods=["POST"])
def submit():
name = request.form.get("name")
email = request.form.get("email")
return f"收到:{name}({email})"
if __name__ == "__main__":
app.run(debug=True)

六、JSON API

现代 Web 应用前后端分离,后端只需返回 JSON:

from flask import Flask, jsonify, request
app = Flask(__name__)
users = [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]
@app.route("/api/users", methods=["GET"])
def get_users():
return jsonify(users)
@app.route("/api/users", methods=["POST"])
def add_user():
data = request.get_json()
new_id = max(u["id"] for u in users) + 1
users.append({"id": new_id, "name": data.get("name")})
return jsonify(users[-1]), 201
if __name__ == "__main__":
app.run(debug=True)

七、实战:待办清单 Web 应用

综合运用所学知识,做一个简单的待办清单应用:

from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
todos = [] # 内存存储,重启会清空
@app.route("/")
def index():
return render_template("todos.html", todos=todos)
@app.route("/add", methods=["POST"])
def add():
text = request.form.get("text", "").strip()
if text:
todos.append({"id": len(todos) + 1, "text": text, "done": False})
return redirect(url_for("index"))
@app.route("/done/<int:todo_id>")
def done(todo_id):
for t in todos:
if t["id"] == todo_id:
t["done"] = True
return redirect(url_for("index"))
if __name__ == "__main__":
app.run(debug=True)
templates/todos.html
<!DOCTYPE html>
<html>
<body>
<h1>待办清单</h1>
<form method="post" action="/add">
<input type="text" name="text" placeholder="输入待办事项">
<button type="submit">添加</button>
</form>
<ul>
{% for t in todos %}
<li>{{ "✅" if t.done else "⬜" }} {{ t.text }}
{% if not t.done %}<a href="/done/{{ t.id }}">完成</a>{% endif %}
</li>
{% endfor %}
</ul>
</body>
</html>

总结

本篇介绍了 Flask 的路由、模板、表单处理和 JSON API,并用待办清单应用串联实战。下一篇将介绍调试与性能优化,为系列收官,敬请期待!

Python进阶教程:Web开发入门(Flask)

作者:Wang Shijie

本文链接:https://wsj-blog.pages.dev/posts/python-jin-jie-jiao-cheng-web-kai-fa-ru-men-flask/

本文采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

Creative Commons

留言评论