当前位置:首页>python>【小沐学Python】Web服务江湖:Flask、Django、FastAPI三分天下(十)

【小沐学Python】Web服务江湖:Flask、Django、FastAPI三分天下(十)

  • 2026-09-02 20:07:27
【小沐学Python】Web服务江湖:Flask、Django、FastAPI三分天下(十)

小沐:戈戈,你说现在Python Web框架这么多,到底哪个好啊?

戈戈:哈哈,这问题就像问三国时期哪个诸侯最强一样,得看具体情况!

小沐:比喻这么生动?那你给我讲讲唄,我最喜欢听你用故事讲技术了!

戈戈:好!今日且让我以三国演义,论Python Web服务框架的三分天下!

小沐:太好了!我这就搬好小板凳!

image

一、Flask军:轻骑突袭,以简制胜

Flask是Python最流行的微Web框架之一,核心代码仅万余行,却提供了极高的扩展性。它就像三国中的轻骑兵,灵活快速,适合中小型项目和微服务架构。

安装方法如下:

pip install flask

以下是一个完整的Flask API示例,展示了如何创建简单的HTTP服务:

# -*- coding: utf-8 -*-# hello_flask.py# 引入Flask核心类from flask import Flask, jsonify, Responseimport json# 创建Flask应用实例app = Flask(__name__)# 配置JSON响应编码为UTF-8app.config['JSON_AS_ASCII'] = False# 自定义JSON响应函数def json_response(data, status=200):    response = Response(        json.dumps(data, ensure_ascii=False),        status=status,        mimetype='application/json; charset=utf-8'    )    return response# 定义根路由的GET请求处理@app.route('/', methods=['GET'])def hello():    return json_response({        "message": "三分天下,Flask为轻骑!",        "status": "success",        "author": "诸葛亮"    })# 定义API路由@app.route('/api/orders/<int:order_id>', methods=['GET'])def get_order(order_id):    return json_response({        "order_id": order_id,        "status": "shipped",        "items": ["羽扇", "纶巾", "草船"]    })if __name__ == '__main__':    # 启动Flask开发服务器    app.run(host='0.0.0.0', port=5000, debug=True)

代码运行结果如下:

在浏览器预览如下:

二、Django军:水陆并进,稳如泰山

Django是Python生态中最完善的企业级Web框架,内置了ORM、管理后台、用户认证、缓存等全套解决方案。它如同曹魏大军,兵多将广,适合大型复杂项目。

Django采用"MTV"设计模式,即Model(模型)、Template(模板)、View(视图)。这种分层架构让代码结构清晰,便于团队协作开发。在实际项目中,我们需要先创建Django项目和应用,配置好settings.py中的数据库连接、INSTALLED_APPS应用列表、中间件MIDDLEWARE等核心配置。路由配置在urls.py中定义,视图逻辑则在views.py里实现。Django还提供了强大的admin管理后台,只需几行代码就能生成可CRUD的数据管理界面。

安装方法如下:

pip install django

Django项目初始化步骤:

# 1. 创建Django项目django-admin startproject myproject# 2. 进入项目目录cd myproject# 3. 创建应用python manage.py startapp myapp# 4. 注册应用(编辑settings.py的INSTALLED_APPS)# 添加 'myapp' 到 INSTALLED_APPS 列表# 5. 运行迁移(创建数据库表)python manage.py migrate# 6. 启动开发服务器python manage.py runserver
image

注册应用详细步骤:

打开项目目录下的 myproject/settings.py 文件,找到 INSTALLED_APPS 列表,添加应用名称:

# settings.pyINSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    # 在这里添加你的应用    'myapp',]

保存文件后,应用即注册成功。

以下是一个Django视图函数的示例,展示了企业级开发的标准写法:

# myapp/views.py# 导入Django视图类和JSON响应from django.http import HttpResponsefrom django.views.decorators.http import require_http_methodsimport json# 自定义JSON响应函数,解决中文乱码问题def json_response(data, status=200):    response = HttpResponse(        json.dumps(data, ensure_ascii=False),        status=status,        content_type='application/json; charset=utf-8'    )    return response# 创建API视图函数@require_http_methods(["GET"])def heroes_view(request):    """获取三国英雄列表"""    heroes = [        {"name": "曹操", "title": "魏王", "weapon": "倚天剑"},        {"name": "刘备", "title": "汉昭烈帝", "weapon": "双股剑"},        {"name": "孙权", "title": "吴大帝", "weapon": "古锭刀"}    ]    return json_response({        "code": 200,        "message": "三分天下英雄会",        "data": heroes    })

代码运行结果如下:


三、FastAPI军:异步新贵,一日千里

FastAPI是近年来崛起的异步Web框架,基于Starlette和Pydantic构建,原生支持异步编程,API自动文档生成,性能直逼Go语言。它宛如东吴周郎,年少成名,技艺超群。

安装方法如下:

pip install fastapi uvicorn

以下是一个完整的FastAPI示例,展示了现代异步开发的强大能力:

# main_fastapi.py# 导入FastAPI和类型注解from fastapi import FastAPI, HTTPExceptionfrom pydantic import BaseModelfrom typing import Optional, Listimport uvicorn# 创建FastAPI应用实例app = FastAPI(title="三国API", version="1.0.0")# 定义数据模型class Hero(BaseModel):    name: str    kingdom: str    weapon: Optional[str] = None# 定义GET请求路由@app.get("/")async def root():    return {        "message": "东吴周郎,异步称王!",        "framework": "FastAPI",        "feature": "高性能异步"    }# 获取单个英雄信息@app.get("/heroes/{hero_name}")async def get_hero(hero_name: str):    heroes_db = {        "曹操": {"kingdom": "魏", "weapon": "倚天剑"},        "刘备": {"kingdom": "蜀", "weapon": "双股剑"},        "孙权": {"kingdom": "吴", "weapon": "古锭刀"}    }    if hero_name not in heroes_db:        raise HTTPException(status_code=404, detail="英雄未找到")    return {"name": hero_name, **heroes_db[hero_name]}if __name__ == "__main__":    # 启动FastAPI服务器(需安装uvicorn)    uvicorn.run(app, host="0.0.0.0", port=9000)

代码运行结果如下:

在浏览器预览如下:

小沐:戈戈,听你这么一讲,我算是搞明白Python Web框架的天下了!

戈戈:天下大势,分久必合,合久必分。选对工具才能一统江湖!

小沐:我这就去搭建一个三国主题的Web服务!

结语

如果您觉得这些文字有一点点用处,请给作者点个赞或关个注;╮( ̄▽ ̄)╭
如果您有技术问题探讨,评论处留言。//(ㄒoㄒ)//
谢谢各位童鞋们啦( ´ ▽ ` )ノ ( ´ ▽ `` )っ!
更多精彩文章详见:
CSDN博客:爱看书的小沐

最新文章

随机文章