目录Python进阶教程Web开发入门Flask一、Flask 简介二、第一个 Flask 应用三、路由与参数四、模板渲染五、处理表单数据六、JSON API七、实战待办清单 Web 应用总结Python进阶教程Web开发入门Flask本文是Python 入门教程系列的第 9 篇。前面介绍了数据分析本篇介绍用Flask框架快速搭建 Web 应用。一、Flask 简介Flask 是 Python 最流行的轻量级 Web 框架简单一个文件即可启动 Web 服务灵活可以自由选择组件生态好文档丰富社区庞大安装pip install flask二、第一个 Flask 应用fromflaskimportFlask appFlask(__name__)app.route(/)defhome():returnh1Hello, Flask!/h1if__name____main__:app.run(debugTrue)# 启动访问 http://127.0.0.1:5000三、路由与参数fromflaskimportFlask appFlask(__name__)# 普通路由app.route(/about)defabout():return关于页面# 动态参数app.route(/user/name)defuser(name):returnfh1欢迎{name}/h1# 指定请求方法app.route(/login,methods[GET,POST])deflogin():return登录页面if__name____main__:app.run(debugTrue)四、模板渲染模板让你在 HTML 中嵌入 Python 变量和逻辑Jinja2 模板引擎fromflaskimportFlask,render_template appFlask(__name__)app.route(/)defhome():returnrender_template(index.html,title首页,items[Python,Flask,Web])if__name____main__:app.run(debugTrue)配套模板文件templates/index.html!DOCTYPEhtmlhtmlheadtitle{{ title }}/title/headbodyh1{{ title }}/h1ul{% for item in items %}li{{ item }}/li{% endfor %}/ul/body/html五、处理表单数据fromflaskimportFlask,request appFlask(__name__)app.route(/submit,methods[POST])defsubmit():namerequest.form.get(name)emailrequest.form.get(email)returnf收到{name}{email}if__name____main__:app.run(debugTrue)六、JSON API现代 Web 应用前后端分离后端只需返回 JSONfromflaskimportFlask,jsonify,request appFlask(__name__)users[{id:1,name:Alice},{id:2,name:Bob}]app.route(/api/users,methods[GET])defget_users():returnjsonify(users)app.route(/api/users,methods[POST])defadd_user():datarequest.get_json()new_idmax(u[id]foruinusers)1users.append({id:new_id,name:data.get(name)})returnjsonify(users[-1]),201if__name____main__:app.run(debugTrue)七、实战待办清单 Web 应用综合运用所学知识做一个简单的待办清单应用fromflaskimportFlask,render_template,request,redirect,url_for appFlask(__name__)todos[]# 内存存储重启会清空app.route(/)defindex():returnrender_template(todos.html,todostodos)app.route(/add,methods[POST])defadd():textrequest.form.get(text,).strip()iftext:todos.append({id:len(todos)1,text:text,done:False})returnredirect(url_for(index))app.route(/done/int:todo_id)defdone(todo_id):fortintodos:ift[id]todo_id:t[done]Truereturnredirect(url_for(index))if__name____main__:app.run(debugTrue)!-- templates/todos.html --!DOCTYPEhtmlhtmlbodyh1待办清单/h1formmethodpostaction/addinputtypetextnametextplaceholder输入待办事项buttontypesubmit添加/button/formul{% for t in todos %}li{{ ✅ if t.done else ⬜ }} {{ t.text }} {% if not t.done %}ahref/done/{{ t.id }}完成/a{% endif %}/li{% endfor %}/ul/body/html总结本篇介绍了 Flask 的路由、模板、表单处理和 JSON API并用待办清单应用串联实战。下一篇将介绍调试与性能优化为系列收官敬请期待