Skip to content

Django API 项目

这是一个使用Django和Django REST Framework构建的API项目。

项目结构

├── api/                  # Django项目主目录
├── config/               # 配置文件目录
│   ├── settings/         # 多环境配置
│   │   ├── base.py       # 基础配置
│   │   ├── development.py # 开发环境配置
│   │   └── production.py # 生产环境配置
│   └── urls/             # URL配置目录
├── docs/                 # 项目文档
├── logs/                 # 日志文件
├── media/                # 用户上传文件
├── middleware/           # 自定义中间件
├── modules/              # 应用模块
│   ├── hello/            # 示例应用
│   └── users/            # 用户应用
├── scripts/              # 管理脚本
│   └── fixtures/         # 初始数据文件
├── static/               # 静态文件
├── staticfiles/          # 收集后的静态文件(生产环境)
├── templates/            # HTML模板
├── utils/                # 工具函数
├── .env.example          # 环境变量示例
├── .gitignore            # Git忽略文件
├── manage.py             # Django管理脚本
└── requirements.txt      # 项目依赖

快速开始

1. 克隆项目

bash
git clone <repository-url>
cd demo-api-django

2. 创建虚拟环境

bash
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
.venv\Scripts\activate     # Windows

3. 安装依赖

bash
pip install -r requirements.txt

4. 配置环境变量

复制环境变量示例文件并根据需要修改:

bash
cp .env.example .env
# 编辑.env文件,设置数据库连接等信息

5. 运行数据库迁移

bash
python manage.py migrate

6. 初始化数据(可选)

bash
python scripts/init_data.py

7. 启动开发服务器

bash
python manage.py runserver

8. 访问API文档

开发环境下可以访问以下地址查看API文档:

  • Swagger UI: httpx://localhost:8000/swagger/
  • ReDoc: httpx://localhost:8000/api/doc/

部署

生产环境设置

  1. 设置环境变量 DJANGO_ENV=production
  2. 收集静态文件:python manage.py collectstatic
  3. 使用Gunicorn或uWSGI部署应用
  4. 配置Nginx或Apache作为前端代理

数据库备份

使用脚本进行数据库备份:

bash
python scripts/backup_db.py

开发指南

添加新应用

  1. 在modules目录下创建新应用:

    bash
    python manage.py startapp myapp modules/myapp
  2. 在config/settings/base.py中添加应用到INSTALLED_APPS

  3. 为新应用创建URL配置并在api/urls.py中包含

编写API视图

推荐使用Django REST Framework的ViewSet:

python
from rest_framework import viewsets
from .models import MyModel
from .serializers import MyModelSerializer

class MyModelViewSet(viewsets.ModelViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer

中间件使用

自定义中间件位于middleware目录,可以在settings中配置使用。

安全注意事项

  1. 生产环境必须设置强密码和安全密钥
  2. 生产环境必须关闭DEBUG模式
  3. 确保ALLOWED_HOSTS设置正确
  4. 使用HTTPS保护生产环境
  5. 定期备份数据库