一个 Django 项目模板。基于 django-admin 默认模板定制,倾向于配合 Django REST Framework 进行前后端分离开发。
- 为隔离不同环境(开发环境、测试环境、生产环境)而设计。
- 预设两个日志文件
./logs/alarms.log和./logs/records.log,控制台仅在调试模式才会打印。 - 生成更易读的表名,比如
apps.order.models.GoodsSKUInfo会默认创建order_goods_sku_info表,而不是order_goodsskuinfo。
- 拥有更加易查、易读的
settings.py。 - 预设(Django 推荐)继承
AbstractUser来自定义apps.core.models.User模型。 - 潜在改动位置通过
TODO开头的注释进行提示,且均位于单独一行,方便清理。 - 每个项目都可单独定制 Django App 模板。
- 简易第二方 API 请求与响应封装。
- 简易微信 API 封装。
- 默认启用 Django REST Framework 的 Token 认证。
| 目录 | 含义 | 描述 |
|---|---|---|
./logs |
日志文件 | 存储运行日志。完全按照用法配置后,首次运行时自动生成。 |
./static |
静态文件 | 存储项目静态文件。完全按照用法配置后,首次运行时自动生成。 |
./uploads |
上传文件 | 存储用户上传的文件。完全按照用法配置后,首次运行时自动生成。 |
./utils |
通用工具 | 跨项目的、通用的工具或代码。 |
./scripts |
脚本工具 | 提供给模板使用者的脚本工具。 |
./api |
封装接口 | 与第三方和第二方交互的请求接口及响应处理。 |
./commons |
定制工具 | 仅适用于当前项目的工具或对框架的定制。 |
./django_template_repo |
项目配置 | Django Settings、总路由等。 |
./apps |
业务 | 项目内的所有 Django App。 |
./apps/template |
模板 | 项目内 Django App 的模板。 |
./apps/core |
核心工具 | 被项目内其它所有 Django App 依赖的工具或代码。 |
""根记录器。project项目内的根记录器。api第二第三方 API 相关日志的记录器,专供./api/下的代码调用。
django框架使用的根记录器,由框架自带。django.server服务器部分的日志。不向上传递。django.request请求部分的日志。不向上传递。django.db.backends数据库后端的日志。不向上传递。- 更多内置的记录器见 Django 默认的日志定义。
| 名称 | 目标 | 级别 | 格式 | 用途 |
|---|---|---|---|---|
monitor |
控制台 | INFO |
标准 | 专供 django.server 使用。 |
console |
控制台 | DEBUG |
标准 | 处理所有控制台打印。 |
recorder |
./logs/records.log |
INFO |
标准 | 处理所有非调试日志。 |
alarmer |
./logs/alarms.log |
WARNING |
详细 | 处理所有警告和异常。 |
- 日志处理器默认无条件触发。
console仅在settings.DEBUG = True时触发。 console的打印格式基于标准格式,但去除了时刻中的日期部分。
Important
从 Django Template Repo v5.0 开始,默认采用 uv 管理项目、维护依赖、说明用法。
可以在 GitHub 中从模板创建仓库,然后通过以下命令克隆到本地。
git clone 你的仓库地址 项目新名称如果不希望创建一个新的 GitHub 仓库,或者不使用 GitHub 平台,可以使用以下命令得到只有一条历史记录的本地仓库。
git clone --depth 1 git@github.com:aixcyi/django-template-repo.git 项目新名称模板更推荐使用 uv 安装管理 Python 和虚拟环境,执行以下命令
uv --version之后打印出如下格式的文本即可说明已经成功安装:
uv 0.11.16 (135a36367 2026-05-21 x86_64-pc-windows-msvc)
现在以 Python 3.10 为例创建并激活虚拟环境:
uv venv --python 3.10pyproject.toml 中的依赖版本仅仅只是最低要求,你可以根据喜好与实际需求来调整。
uv sync如果需要更丰富的开发体验,可以选择一并安装可选依赖:
uv sync --extra dev以上两条命令二选一执行即可。
- 修改
./pyproject.toml下[project]一节中的name为你的项目名称、version为你的项目版本号。 - 模板的 Django Settings 目录位于
./django_template_repo/,可以执行以下命令来一键更名(需要符合 Python 包命名规则)。
uv run scripts/fit.pyNote
Django 文档:Settings 快速配置
Django 文档:Settings 完整配置列表
Django REST Framework 文档 Settings 部分
修改 ./django_template_repo/settings.py 下的 DATABASES 和 CACHES
并根据需要删去除了 default 之外的其它配置(这么做是为了统一开发、测试、生产环境):
DATABASES = {
'default': dict(
ENGINE='django.db.backends.postgresql',
NAME='django_template_repo',
USER='postgres',
PASSWORD='postgres',
HOST='127.0.0.1',
PORT='5432',
),
}
CACHES = {
'default': dict(
BACKEND='django.core.cache.backends.redis.RedisCache',
LOCATION='redis://127.0.0.1:6379/0',
),
}创建 ./django_template_repo/settings_dev.py 用于配置开发环境:
执行
uv run manage.py genkey -n 20可以快速生成 20 个SECRET_KEY以供挑选。
from django_template_repo.settings import *
DEBUG = True
SECRET_KEY = '<Z~Bhb@?39U0EcX31IKEQ^93GlQt-o-x8QXH#sE7=Ci?gJ4J49nOKir?WMR3`EhyjOt%uivqAZ!Ka;uL'
ALLOWED_HOSTS = ['*']
DATABASES['default']['NAME'] = 'django_template_repo'
DATABASES['default']['USER'] = 'postgres'
DATABASES['default']['PASSWORD'] = 'postgres'
CACHES['default']['LOCATION'] = 'redis://127.0.0.1:6379/0'
LOGS_DIR.mkdir(exist_ok=True) # 日志目录
MEDIA_ROOT.mkdir(exist_ok=True) # 用户上传目录
STATIC_ROOT.mkdir(exist_ok=True) # 静态文件目录创建 ./django_template_repo/settings_prod.py 用于配置生产环境:
Important
切记,生产环境中的
SECRET_KEY
应当与其它 所有环境 都不相同。
from django_template_repo.settings import *
DEBUG = False
SECRET_KEY = 'Yl#}JDJ>>>tWhU{z1#yPmgu_Js^h6*SVqd*DYSE{FpNi8vtY;5W!gJq;?793?5jfF+IdH0z>&WPRG=-?'
DATABASES['default']['NAME'] = 'django_template_repo'
DATABASES['default']['USER'] = 'aliyum'
DATABASES['default']['PASSWORD'] = 'fox-yum-cha'
CACHES['default']['LOCATION'] = 'redis://127.0.0.1:6379/0'- 按照喜好或需要删除或改编这个 README 文件;
- 查找所有以
TODO:开头的注释,并按照提示根据实际需要进行修改。
执行以下命令运行项目:
uv run manage.py runserver在 settings.APPS_ROOT 指定的目录下按照模板 ./apps/template
创建一个 Django App(将 <APPNAME> 替换为你需要的 App 包名):
uv run manage.py addapp <APPNAME>Note
./apps/template 是独属于 当前项目 的 Django App 模板,与
django-admin 的 startapp 所使用的模板互不影响;默认配备了
Django REST Framework 的 serializers.py
以及 urls.py,可以按照喜好或需求改动,同时为了适配统一存储,将
apps.py 更名为 configs.py。
uv run manage.py makemigrationsuv run manage.py migrate可以默认在 127.0.0.1:8000 下运行:
uv run manage.py runserver也可以用指定的 IP 和端口运行:
uv run manage.py runserver 127.0.0.1:22333格式化项目内的所有代码:
ruff format格式化指定文件或文件夹:
ruff format ./ruff check以 pandas 为例:
uv pip install pandas记得一并修改 pyproject.toml 。
执行过 uv pip install 安装包或 uv pip uninstall 卸载包之后,需要手动修改
pyproject.toml 的 project.dependencies,然后执行:
uv sync如果还需要安装 project.optional-dependencies 下的可选依赖(以 dev 组为例),可以改为执行:
uv sync --extra dev仅对 Django 最新一个 LTS 的正式发布版本兼容,项目版本号跟随 major 变动,Python 兼容性也跟随变动,详情可见 Django FAQ 或 《Django 兼容性简表》。