Python Web 框架对比与实战:Django vs Flask vs FastAPI

Python Web 框架对比与实战:Django vs Flask vs FastAPI

1. 背景与动机

Python 拥有丰富的 Web 开发框架,每个框架都有其特点和适用场景。本文对比 Django、Flask 和 FastAPI 三大主流框架,帮助开发者选择合适的工具。

2. 框架对比

特性DjangoFlaskFastAPI
学习曲线陡峭平缓中等
功能完整性全功能微框架现代API
性能中等中等
异步支持有限扩展支持原生支持
自动文档扩展内置

3. Django 实战

# models.py from django.db import models class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) # views.py from django.shortcuts import render from rest_framework import viewsets from .models import Article from .serializers import ArticleSerializer class ArticleViewSet(viewsets.ModelViewSet): queryset = Article.objects.all() serializer_class = ArticleSerializer 

4. Flask 实战

from flask import Flask, jsonify, request from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) @app.route('/users', methods=['GET', 'POST']) def users(): if request.method == 'POST': user = User(username=request.json['username']) db.session.add(user) db.session.commit() return jsonify({'id': user.id}), 201 users = User.query.all() return jsonify([{'id': u.id, 'username': u.username} for u in users]) 

5. FastAPI 实战

from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import List app = FastAPI() class Item(BaseModel): name: str price: float items = [] @app.get("/items", response_model=List[Item]) def get_items(): return items @app.post("/items") def create_item(item: Item): items.append(item) return item @app.get("/items/{item_id}") def get_item(item_id: int): if item_id >= len(items): raise HTTPException(status_code=404, detail="Item not found") return items[item_id] 

6. 性能测试

# 使用 locust 进行压力测试 from locust import HttpUser, task class WebsiteUser(HttpUser): @task def get_items(self): self.client.get("/items") 

7. 结论

  • Django:适合大型项目,需要快速开发完整功能
  • Flask:适合小型项目,需要灵活性和简洁性
  • FastAPI:适合现代 API 开发,需要高性能和自动文档

Read more

【web3】了解web3

Web3(也称为 Web 3.0)通常被认为是互联网的第三代演进阶段。 简单来说,Web3 的核心理念是从大型科技公司(如 Google、Facebook、Amazon)手中夺回控制权,通过区块链技术,将数据的所有权和价值归还给用户。 为了让你更直观地理解,我们可以从互联网的演变历史说起: 1. 互联网的三个阶段:从“只读”到“拥有” 理解 Web3 最好的方式是看它如何改变了我们与网络的关系: 特征Web 1.0 (约1990-2004)Web 2.0 (约2004-至今)Web 3.0 (正在发生)核心行为Read (只读)Read + Write (读 + 写)Read + Write + Own (读 + 写

Nature新刊Sensors:清华团队突破机器人触觉难题,多模态感知精度直逼人类指尖

Nature新刊Sensors:清华团队突破机器人触觉难题,多模态感知精度直逼人类指尖

首次让触觉数据从“数值”变成“可理解的信息” ——鸽眼的启发 目录 01  传统触觉传感器的痛点 电子皮肤(e-skin):分辨率和模态难两全 视觉触觉传感器:光谱范围被“卡脖子” 数据解读:多模态信息“各说各话” 02  仿生灵感 导电层:既是“电极”也是“透光开关” 荧光层+反射层:多光谱“信息接收器” 可调节气压,适应不同物体 03  DOVE模型让触觉会“说话” 多模态数据“融合解读” 物体差异“对比推理” 联想判断 04  6大维度刷新触觉传感器纪录 三指灵巧手 平行夹爪 05  待解难题 微型化:目前还无法装在机器人指尖 耐用性:长期使用后性能会下降 动态场景适应:无法处理快速运动的物体

微信小程序案例 - 自定义 tabBar

一、前言:为什么需要自定义 tabBar? 微信小程序原生 tabBar 虽然简单易用,但存在明显限制: * ❌ 不支持中间“+”号等凸起按钮 * ❌ 图标和文字样式无法高度自定义(如选中态动画) * ❌ 无法动态隐藏/显示 tabBar * ❌ 不能嵌入徽标(Badge)、红点等业务元素 解决方案:使用自定义 tabBar! 本文将带你从零实现一个支持中间凸起按钮、带动画、可扩展的自定义 tabBar,并封装为通用组件。 二、最终效果预览 ✅ 底部 5 个 tab(中间为“+”发布按钮) ✅ 点击 tab 平滑切换页面 ✅ 中间按钮跳转独立功能页(如发布内容) ✅ 支持徽标、选中高亮、图标切换 三、实现原理 由于小程序页面是全屏渲染,我们无法像 H5 那样用 fixed 布局直接覆盖原生

5步升级小米智能家居Home Assistant集成:从入门到精通完全指南

5步升级小米智能家居Home Assistant集成:从入门到精通完全指南 【免费下载链接】ha_xiaomi_homeXiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 本文是一份全面的小米智能家居接入Home Assistant升级指南,将帮助你解决设备不响应、数据不同步等常见问题,掌握从v0.1到v0.4.2版本的核心变化与部署技巧,实现智能家居系统的高效稳定运行。 一、版本升级核心价值与准备工作 为什么需要升级? 升级小米智能家居Home Assistant集成组件不仅能获得100+设备兼容性修复,还能体验20+新增核心功能。特别是v0.4.0版本引入的本地控制架构,将设备响应延迟从300-500ms降至50-150ms,极大提升用户体验。 升级前检查清单 在开始升级前,请确认以下事项: * 已备份custom_components/xiaomi_