|
用Python搭web服务,搭建最直白的搭建路径是Flask。不是搭建Django,不是搭建FastAPI,就是搭建Flask。原因很简单:五分钟能跑起来的搭建东西,没必要花半小时配置。搭建 我见过太多人一上来就搞Django,搭建项目结构生成一大堆,搭建admin后台、搭建ORM、搭建迁移脚本全齐了,搭建结果要写的搭建只是一个返回JSON的小接口。杀鸡用牛刀,搭建最后牛刀还卡在鸡骨头里——配置环境变量、搭建处理跨域、调试中间件,半天过去了,代码一行没写。 Flask不一样。它小,但够用。你只需要一个文件,十几行代码,就能让浏览器看到“Hello World”。 from flask import Flask app = Flask(__name__) @app.route('/') def home(): return "Hello, Web!" if __name__ == '__main__': app.run(debug=True) 这段代码跑起来,浏览器打开127.0.0.1:5000,文字就出来了。没有比这更直接的入门体验。 但光会跑Hello World没用,你得知道它怎么处理请求。Flask的核心逻辑是路由——你访问哪个URL,它就执行哪个函数。这像一张地图,每个地址对应一个动作。 比如你想做一个简单的待办事项API。GET请求拿到所有事项,POST请求新增一条。代码量依然少得可怜: tasks = [] @app.route('/tasks', methods=['GET']) def get_tasks(): return { 'tasks': tasks} @app.route('/tasks', methods=['POST']) def add_task(): data = request.get_json() tasks.append(data['title']) return { 'status': 'ok'} 注意,这里没有数据库,没有用户系统,没有权限控制。任务列表存在内存里,服务器一重启就清空。但这恰恰是学习阶段最该有的样子——先把流程跑通,再考虑持久化。 我自己带过几个新手,发现他们最容易卡住的地方反而不是Python语法,而是“服务器到底怎么接收数据”。有人用AJAX发POST请求,后端死活拿不到参数,折腾两小时发现是忘了在函数里写request.get_json()。这种坑,踩一次就记住了,比看十遍文档都管用。 再往深走一步,你会需要模板渲染。Flask自带的Jinja2模板引擎,能让你把HTML和Python逻辑混在一起。写法很直观: from flask import render_template @app.route('/hello/<name>') def hello(name): return render_template('hello.html', name=name) 对应的hello.html里写<p>你好,{ { name }}</p>,动态内容就出来了。这种模式适合做传统多页面网站,但说实话,现在前端框架这么流行,纯后端模板用得越来越少。更多人把Flask纯粹当API后端,前端用Vue或React去调。 部署这块,很多人一听到就头疼。其实本地开发用app.run()就够了,真正上线才需要gunicorn或uWSGI。命令也简单: gunicorn -w 4 app:app 四个worker进程,扛住中小流量绰绰有余。我见过一个创业公司的内部工具,用Flask写的,部署在2核4G的云服务器上,同时在线几十人,稳得一批。别被“高并发”吓住,大部分业务根本到不了那个量级。 最后说点实在的。如果你只是想快速验证一个想法,或者给内部团队做个管理后台,Flask就是最优解。它不强迫你遵循任何模式,你想怎么写就怎么写,代码结构自己掌控。这种自由度,恰恰是新手最需要的——先能跑,再谈跑得优雅。 等哪天你发现Flask不够用了,比如需要异步任务、复杂ORM、自动API文档,那时候再换FastAPI或Django也不迟。工具是死的,人是活的,别让框架替你选路。 |