当前位置: 首页 > news >正文

Django目录结构最佳实践

Django项目目录结构

  • 项目目录结构
    • 配置文件引用修改
    • 创建自定义子应用方法
    • 修改自定义注册目录从apps目录开始

项目目录结构

└── 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 将

原 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "backend.settings")
修改后 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "backend.settings.dev")

在这里插入图片描述

创建自定义子应用方法

举例:创建一个home子应用

cd backend/apps
python ../../manage.py startapp home

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

settings.dev.py

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",
]
import sys
BASE_DIR = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(BASE_DIR / 'apps'))

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

相关文章:

Django目录结构最佳实践

Django项目目录结构 项目目录结构配置文件引用修改创建自定义子应用方法修改自定义注册目录从apps目录开始 项目目录结构 └── backend # 后端项目目录(项目名称)├── __init__.py├── logs # 项目日志目录├── manage.py #…...

npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

报错场景: 使用npm run dev命令启动项目,报错 PS D:\vuecode\ying-mei> npm run dev > ying-mei0.0.0 dev > vite vite 不是内部或外部命令,也不是可运行的程序 或批处理文件。 原因: 缺失依赖,因为新建的项…...

后端:Spring、Spring Boot-实例化Bean依赖注入(DI)

文章目录 1. 实例化Bean2. 使用FactoryBean3. 依赖注入(DI)3.1 AutoWired 属性注入(查找顺序:先类型,后名字)3.2 AutoWired 在构造函数&参数上的使用3.3 Inject和Resource 进行依赖注入3.4 Value 进行注入 1. 实例化Bean 默认使用无参构造函数&…...

C++ 数据结构 静态顺序表、动态顺序表。

静态顺序表(Static Array List)是一种线性数据结构,通常用数组实现。它具有固定的大小,并在编译时分配内存。以下是静态顺序表的一些基本概念和实现示例。 静态顺序表基本概念 固定大小:静态顺序表的大小在创建时定义…...

QML旋转选择器组件Tumbler

1. 介绍 Tumbler是一个用于创建旋转选择器的组件。它提供了一种直观的方式来让用户从一组选项中进行选择,类似于转盘式数字密码锁。网上找的类似网图如下: 在QML里,这种组件一共有两个版本,分别在QtQuick.Extras 1.4(旧)和QtQuic…...

在工作中常用到的 Linux 命令总结

引言 我之前找工作面试的时候。几乎每次面试几乎都会问到 Linux 常用命令,会问一些命令的应用场景。目的是考察我们是否在实际开发中经常用、用得熟练。今天我就来系统地总结一下开发过程中最常用的 Linux 命令,算是一个复习总结。 基本操作 文件管理…...

反射、枚举和lambda表达式

文章目录 一、反射1.1 什么是反射1.2 反射相关的类1.3 示例获取Class对象通过反射去创建对象调用带两个参数且私有的构造方法获取私有属性反射私有方法 二、枚举2.1 什么是枚举以及其优缺点2.2 如何使用枚举组织常量的基本方法枚举类的其他方法示例枚举能否通过反射拿到实例对象…...

Stable Diffusion Web UI 1.9.4常用插件扩展-WD14-tagger

Stable Diffusion Web UI 1.9.4 运行在 WSL 中的 Docker 容器中 tagger 插件的作用是,上传一张图片,反推这张图片可能的提示词。 使用场景就是,想要得到类似的图片内容时使用。 WD14-tagger 安装 Stable Diffusion WebUI WD14-tagger GitH…...

java 第19天 Lambda、jdk8.0新方法、Optional

一.Lambda表达式 前提是:参数是函数式接口才可以书写Lambda表达式 函数式接口条件: 1.接口 2.只有一个抽象方法 lambda表达式又称为匿名函数,允许匿名函数以参数的形式传入方法,简化代码 lambda表达式分为两部分()->{} …...

江协科技STM32学习- P31 I2C通信协议

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…...

6、liunx目录的功能

一、目录简介 Linux主要树结构目录包括:/、/root、/home、/usr、/bin、/tmp、/sbin、/proc、/boot 【Linux系统中常见目录功能如下】 / 根目录;/bin 存放必要的命令;(普通用户) /boot 存放内核以及启动所需的文件&…...

挑战Java面试题复习第5天,无人扶我青云志

挑战第 5 天 java反射List Set Map 区别Object 常用方法 java反射 定义: 运行时动态获取类信息和调用方法的特性。 应用场景: JDBC数据库连接。框架如Hibernate和Struts等。 实现方式: 通过四种方法获取Class对象: Class.fo…...

大规模语言模型:从理论到实践(1)

1、绪论 大规模语言模型(Large Language Models,LLM)是由包含数百亿以上参数的深度神经网络构建的语言模型,采用自监督学习方法通过大量无标注文本进行训练。自2018年以来,多个公司和研究机构相继发布了多种模型&#…...

C#如何锁定和解除鼠标及键盘BlockInput

在C#中,"BlockInput"通常指的是一个功能或方法,用于阻止或暂停用户输入一段时间。这在某些特定的应用场景下非常有用,比如在游戏中防止玩家连续快速点击导致游戏逻辑错误,或者在UI应用中防止用户在某个操作正在进行时进…...

Stable Diffusion 3.5发布:图像生成新纪元,多模态AI的突破!

在人工智能的图像生成领域,我们刚刚迎来了一位新的明星——Stable Diffusion 3.5。这是一款由多模态扩散Transformer(MMDiT)驱动的文本到图像模型,它在图像质量、字体处理、复杂提示理解以及资源效率方面都实现了显著提升。今天&a…...

MySQL超大分页怎么优化处理?limit 1000000,10 和 limit 10区别?覆盖索引、面试题

1. limit 100000,10 和 limit 10区别 LIMIT 100000, 10: 这个语句的意思是,从查询结果中跳过前100000条记录,然后返回接下来的10条记录。这通常用于分页查询中,当你需要跳过大量的记录以获取后续的记录时。例如,如果你…...

RabbitMQ 实现消息队列负载均衡

在现代应用程序中,消息队列是一种重要的架构模式,用于解耦服务、处理异步任务和实现负载均衡。其中,RabbitMQ是一个广泛使用的开源消息代理,提供了高可用性、可靠性和灵活性。本文将展示如何使用Python及其pika库来实现RabbitMQ&a…...

嵌入式linux中HTTP协议原理基本分析

第一:HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 HTTP的发展是由蒂姆伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维…...

thinkphp和vue基于Workerman搭建Websocket服务实现用户实时聊天,完整前后端源码demo及数据表sql

最近接了一个陪玩小程序,其中有一个实时聊天的项目,需要搭建Websocke服务,通过多方考虑选择了通过GatewayWorker框架(基于Workerman),将代码提取了出来,用到的框架封装到了vendor目录下,完整前后…...

浅谈射频应用

射频(Radio Frequency,缩写为RF)是一种高频交流变化电磁波的简称,其频率范围广泛,从几十千赫兹跨越至几百吉赫兹。射频技术在多个领域有着广泛的应用: 1、通信领域:射频技术是现代通信领域的重要…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Axure零基础跟我学:展开与收回

亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...

Docker环境下安装 Elasticsearch + IK 分词器 + Pinyin插件 + Kibana(适配7.10.1)

做RAG自己打算使用esmilvus自己开发一个&#xff0c;安装时好像网上没有比较新的安装方法&#xff0c;然后找了个旧的方法对应试试&#xff1a; &#x1f680; 本文将手把手教你在 Docker 环境中部署 Elasticsearch 7.10.1 IK分词器 拼音插件 Kibana&#xff0c;适配中文搜索…...

十二、【ESP32全栈开发指南: IDF开发环境下cJSON使用】

一、JSON简介 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;具有以下核心特性&#xff1a; 完全独立于编程语言的文本格式易于人阅读和编写易于机器解析和生成基于ECMAScript标准子集 1.1 JSON语法规则 {"name"…...