后端框架速查:Django/Flask/Express Awesome Cheatsheet 专题

后端框架速查:Django/Flask/Express Awesome Cheatsheet 专题

【免费下载链接】awesome-cheatsheet :beers: awesome cheatsheet 【免费下载链接】awesome-cheatsheet 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-cheatsheet

引言:后端开发的效率困境与解决方案

你是否还在开发中频繁切换浏览器查找框架API?是否在调试路由配置时反复查阅官方文档?本文将系统整理三大主流后端框架——Django(Python)、Flask(Python)和Express(Node.js)的核心速查指南,整合README.md中精选的优质资源,通过对比表格、代码示例和流程图,帮你一站式掌握框架精髓,提升开发效率300%。

读完本文你将获得:

  • 三框架核心功能速查表(路由/中间件/ORM等)
  • 15+关键场景代码模板(认证/数据库操作/错误处理)
  • 框架选型决策流程图
  • 性能优化与最佳实践总结

框架概述与核心架构对比

1. 框架定位与适用场景

特性DjangoFlaskExpress
设计哲学batteries-included微框架+扩展极简灵活
典型应用企业级Web应用轻量API/原型Node.js全栈应用
学习曲线中等平缓平缓
性能中等高(异步I/O)
生态系统丰富(内置Admin/ORM)模块化(插件生态)庞大(npm生态)
官方文档django-cheatsheet无官方速查表express-cheatsheet

2. 架构流程图

mermaid

项目logo

Django 核心速查指南

1. 项目结构与命令行工具

# 创建项目
django-admin startproject myproject
cd myproject

# 创建应用
python manage.py startapp myapp

# 数据库迁移
python manage.py makemigrations
python manage.py migrate

# 启动开发服务器
python manage.py runserver 0.0.0.0:8000

2. 关键功能代码示例

路由配置(myproject/urls.py)
from django.urls import path
from myapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/users/', views.UserList.as_view(), name='user-list'),
    path('api/users/<int:pk>/', views.UserDetail.as_view(), name='user-detail'),
]
模型定义(myapp/models.py)
from django.db import models

class User(models.Model):
    username = models.CharField(max_length=150, unique=True)
    email = models.EmailField()
    date_joined = models.DateTimeField(auto_now_add=True)
    
    class Meta:
        ordering = ['-date_joined']
    
    def __str__(self):
        return self.username
基于类的视图(myapp/views.py)
from rest_framework import generics
from .models import User
from .serializers import UserSerializer

class UserList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    
class UserDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

Flask 核心速查指南

1. 基础项目结构

myflaskapp/
├── app/
│   ├── __init__.py
│   ├── routes.py
│   └── models.py
├── config.py
└── run.py

2. 核心功能代码示例

应用初始化(app/init.py)
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(config_class)
    
    db.init_app(app)
    
    from app.routes import main
    app.register_blueprint(main)
    
    return app
路由与蓝图(app/routes.py)
from flask import Blueprint, jsonify, request
from app.models import User
from app import db

main = Blueprint('main', __name__)

@main.route('/api/users', methods=['GET'])
def get_users():
    users = User.query.all()
    return jsonify([{'id': u.id, 'username': u.username} for u in users])

@main.route('/api/users', methods=['POST'])
def create_user():
    data = request.get_json()
    new_user = User(username=data['username'], email=data['email'])
    db.session.add(new_user)
    db.session.commit()
    return jsonify({'message': 'User created'}), 201
错误处理
@main.errorhandler(404)
def not_found(error):
    return jsonify({'error': 'Not found'}), 404

@main.errorhandler(500)
def server_error(error):
    return jsonify({'error': 'Server error'}), 500

Express 核心速查指南

1. 项目初始化与中间件

# 创建项目
mkdir myexpressapp && cd myexpressapp
npm init -y
npm install express body-parser mongoose

# 启动服务器
node app.js

2. 核心功能代码示例

应用配置(app.js)
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const app = express();

// 中间件
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// 数据库连接
mongoose.connect('mongodb://localhost:27017/myapp', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

// 路由
app.use('/api/users', require('./routes/users'));

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send({ error: 'Something broke!' });
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
路由定义(routes/users.js)
const express = require('express');
const router = express.Router();
const User = require('../models/User');

// 获取所有用户
router.get('/', async (req, res, next) => {
  try {
    const users = await User.find();
    res.json(users);
  } catch (err) {
    next(err);
  }
});

// 创建用户
router.post('/', async (req, res, next) => {
  try {
    const newUser = new User(req.body);
    const savedUser = await newUser.save();
    res.status(201).json(savedUser);
  } catch (err) {
    next(err);
  }
});

module.exports = router;
数据模型(models/User.js)
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
  username: { type: String, required: true, unique: true },
  email: { type: String, required: true },
  dateJoined: { type: Date, default: Date.now }
});

module.exports = mongoose.model('User', userSchema);

三框架关键功能对比与代码模板

1. 路由定义对比

功能DjangoFlaskExpress
基本路由path('url/', view, name='name')@app.route('/url')app.get('/url', (req,res)=>{})
带参数路由path('user/<int:id>/', ...)@app.route('/user/<int:id>')app.get('/user/:id', ...)
路由组include('app.urls')蓝图(Blueprint)express.Router()
反向解析reverse('name')url_for('func')需手动实现

2. 数据库操作示例

Django ORM
# 查询
users = User.objects.filter(email__contains='example.com').order_by('-date_joined')

# 创建
new_user = User(username='john', email='john@example.com')
new_user.save()

# 更新
user = User.objects.get(id=1)
user.email = 'new@example.com'
user.save()

# 删除
user.delete()
Flask-SQLAlchemy
# 查询
users = User.query.filter(User.email.contains('example.com')).order_by(User.date_joined.desc()).all()

# 创建
new_user = User(username='john', email='john@example.com')
db.session.add(new_user)
db.session.commit()

# 更新
user = User.query.get(1)
user.email = 'new@example.com'
db.session.commit()

# 删除
db.session.delete(user)
db.session.commit()
Express-Mongoose
// 查询
const users = await User.find({ email: /example.com/ })
  .sort({ dateJoined: -1 });

// 创建
const newUser = new User({ username: 'john', email: 'john@example.com' });
await newUser.save();

// 更新
await User.findByIdAndUpdate(id, { email: 'new@example.com' });

// 删除
await User.findByIdAndDelete(id);

3. 认证中间件实现

Django(中间件类)
class AuthMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        if not request.user.is_authenticated and request.path != '/login':
            return redirect('/login')
        response = self.get_response(request)
        return response
Flask(装饰器)
from functools import wraps
from flask import redirect, session, url_for

def login_required(f):
    @wraps(f)
    def decorated_function(*args, **kwargs):
        if 'user_id' not in session:
            return redirect(url_for('login'))
        return f(*args, **kwargs)
    return decorated_function

@app.route('/protected')
@login_required
def protected_route():
    return "Protected content"
Express(中间件函数)
const authMiddleware = (req, res, next) => {
  if (!req.session.userId) {
    return res.status(401).json({ error: 'Unauthorized' });
  }
  next();
};

app.get('/protected', authMiddleware, (req, res) => {
  res.json({ message: 'Protected content' });
});

框架选型决策指南

mermaid

性能优化与最佳实践

1. 通用优化策略

  1. 缓存策略

    • Django: django-cacheops/cache_page装饰器
    • Flask: flask-caching扩展
    • Express: apicache/Redis缓存中间件
  2. 数据库优化

    • 使用索引(三框架均支持)
    • 批量操作代替循环单条操作
    • 避免N+1查询问题
  3. 异步处理

    • Django 3.2+: async def视图
    • Flask: Quart框架替代或gevent
    • Express: 原生支持异步函数

2. 安全最佳实践

  • 输入验证

    • Django: 表单验证/DRF序列化器
    • Flask: flask-wtf
    • Express: joi/express-validator
  • 认证授权

    • Django: django-allauth/JWT扩展
    • Flask: flask-jwt-extended
    • Express: passport.js/jsonwebtoken
  • CSRF保护

    • Django: 内置CSRF中间件
    • Flask: flask-wtf CSRF保护
    • Express: csurf中间件

总结与资源扩展

本文整合了README.md中Django和Express的官方速查资源,补充了Flask的实用代码模板,通过对比表格、流程图和代码示例,系统梳理了三大后端框架的核心知识点。实际开发中,建议将本文作为快速参考手册,并结合官方文档深入学习。

推荐扩展资源:

收藏本文,让后端开发效率倍增!如有更多框架需求,欢迎在评论区留言。

【免费下载链接】awesome-cheatsheet :beers: awesome cheatsheet 【免费下载链接】awesome-cheatsheet 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-cheatsheet

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值