Django目录结构最佳实践

Django项目目录结构

项目目录结构

python 复制代码
└── backend         # 后端项目目录(项目名称)
    ├── __init__.py
    ├── logs         # 项目日志目录
    ├── manage.py    # 项目启动文件
    ├── scripts      # 保存项目运维的脚本文件 bash
    │   └── __init__.py
    └── backend     # 项目主应用(项目名称)
        ├── apps     # 存放项目中所有自定义app
        │   └── __init__.py
        ├── asgi.py
        ├── __init__.py
        ├── libs              # 第三方类库的保存目录[第三方组件、模块](包)
        │   └── __init__.py
        ├── settings
        │   ├── dev.py         # 开发环境本地配置文件
        │   ├── __init__.py
        │   ├── prod.py        # 生产环境本地配置文件
        │   └── test.py        # 测试环境本地配置文件
        ├── settings.py
        ├── urls.py            # 项目总路由,总入口 
        ├── utils          # 多个模块[子应用]的公共函数类库[自己开发的组件]
        │   └── __init__.py
        └── wsgi.py

配置文件引用修改

将settins.py文件修改为dev或其他环境得本地配置文件时需修改项目管理文件中得配置文件引用

打开manage.py

python 复制代码
原 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "backend.settings")
修改后 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "backend.settings.dev")

创建自定义子应用方法

举例:创建一个home子应用

python 复制代码
cd backend/apps
python ../../manage.py startapp home

修改自定义注册目录从apps目录开始

settings.dev.py

python 复制代码
import sys
BASE_DIR = Path(__file__).resolve().parent.parent
# 注意要放在dev.py(本地配置文件)最上面
sys.path.insert(0, str(BASE_DIR / 'apps'))
INSTALLED_APPS = [
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "rest_framework",
    # 自己的app
    "home",
]
python 复制代码
import sys
BASE_DIR = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(BASE_DIR / 'apps'))

通过这样调整后,后续我们在本地配置文件中注册子应用时以及在路由视图中导入子应用的路由时就不需要再写apps目录,直接写子应用名称即可,再次强调这些目录配置要写在本地配置文件最上面

相关推荐
qianshanxue112 分钟前
0-3论软件设计模式及其应用、2016-已写(观察者通知,命令-控制指令,适配器-兼容,工厂-多种数据库)
数据库·设计模式
小许学java13 分钟前
Spring事务和事务传播机制
java·数据库·spring·事务
小无名呀15 分钟前
视图(View)
数据库·mysql
lkbhua莱克瓦2419 分钟前
MySQL介绍
java·开发语言·数据库·笔记·mysql
teacher伟大光荣且正确36 分钟前
关于Qt QReadWriteLock(读写锁) 以及 QSettings 使用的问题
java·数据库·qt
钱彬 (Qian Bin)1 小时前
项目实践13—全球证件智能识别系统(内网离线部署大模型并调用)
数据库·postgresql·fastapi·ubuntu24.04·离线部署·qwen3大模型
hgz07101 小时前
索引的原理
数据库
尋有緣1 小时前
力扣614-二级关注者
大数据·数据库·sql·oracle
TG:@yunlaoda360 云老大1 小时前
华为云国际站代理商的DDM支持哪些拆分算法?
数据库·算法·华为云
咕噜企业分发小米1 小时前
腾讯云向量数据库的HNSW索引具体是如何构建和优化的?
数据库·云计算·腾讯云