--- title: "TikTok PM - Python Django 项目" type: source tags: [django, python, tiktok, mysql, mariadb, docker, bright-data] date: 2025-11-24 --- ## Source File - [[raw/Others/TikTok PM - Python Django Project.md]] ## Summary(用中文描述) - 核心主题:TikTok Shop 产品数据管理系统的完整 Django Web 应用开发教程 - 问题域:电商产品数据抓取、存储、管理与可视化分析 - 方法/机制:Django ORM + MySQL + Django REST Framework + Docker 容器化部署 + Bright Data API 异步数据抓取 - 结论/价值:提供从零构建 TikTok 电商产品管理系统的完整技术方案,含 Admin 后台、API 接口、Docker 生产部署、异步任务队列 ## Key Claims(用中文描述) - Django Admin 可通过富文本编辑器(django-tinymce)、自定义视图、内联关联模型实现复杂产品管理界面 - Django REST Framework + django-filter 可快速构建支持快速搜索和多条件过滤的 RESTful API,供 n8n 等自动化工具调用 - Docker + Gunicorn + Nginx 容器化部署方案可实现零停机版本更新和快速回滚 - Django-Q 异步任务队列可处理 Bright Data 异步 API 调用,实现不阻塞 Web 请求的产品数据抓取与导入 - 自定义 Management Command 可将 JSON 文件批量导入逻辑封装为 `python manage.py import_json_data` 命令 ## Key Quotes > "无论修改字段类型、添加新字段,还是像您这样修改字段约束(例如从非空改为可空 null=True),都必须遵循这两步流程:makemigrations + migrate" — Django 数据库迁移最佳实践 > "原子性部署:docker compose up --build -d 确保了所有依赖项和配置都会在新镜像中构建好,如果构建失败,旧服务不会受到影响" — Docker 生产部署最佳实践 ## Key Concepts - [[Django ORM]]:通过 Python 类定义数据库表结构,Django 自动生成 SQL 并管理迁移 - [[Django REST Framework]]:构建 RESTful API 的 Django 第三方框架,支持序列化器、视图集、过滤和搜索 - [[Docker 容器化部署]]:使用 Dockerfile + docker-compose.yml 实现应用容器化,结合 Gunicorn + Nginx 进行生产部署 - [[Django Admin 定制]]:通过 fieldsets、inlines、readonly_fields、list_display 等实现复杂管理界面 - [[Django-Q 异步任务]]:Django 异步任务队列,用于处理耗时的外部 API 调用 - [[Bright Data API]]:第三方数据抓取服务,支持异步请求模式,适合大规模产品数据采集 - [[MySQL/MariaDB 数据库]]:项目使用 MySQL/MariaDB 作为后端数据库,存储 TikTok 产品数据 ## Key Entities - [[TikTok Shop]]:电商平台,数据来源 - [[Django]]:Python Web 框架 - [[Bright Data]]:第三方数据抓取 API 提供商 - [[MySQL / MariaDB]]:关系型数据库 - [[Docker]]:容器化平台 - [[Gunicorn]]:Python WSGI HTTP 服务器 - [[Nginx]]:反向代理和静态文件服务 - [[n8n]]:自动化工作流工具(通过 REST API 集成) ## Connections - [[Django REST Framework]] ← builds_on ← [[Django ORM]] - [[Docker 容器化部署]] ← extends ← [[Gunicorn]] + [[Nginx]] - [[Django-Q 异步任务]] ← used_by ← [[Bright Data API]] - [[MySQL / MariaDB]] ← stores ← TikTok 产品数据 ## Contradictions - 暂无发现与其他 Wiki 页面的冲突