Django项目创建子应用
1.在工程下创建包apps用于管理所有子应用
2.在apps
包下创建应用users
$ cd ~/projects/meiduo_project/meiduo_mall/meiduo_mall/apps
$ python ../../manage.py startapp users
3. 注册users子应用
- 在工程配置文件中注册子应用中添加users的配置
方法一:直接写子应用的全路径
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 注册users子应用 'meiduo_mall.apps.users', ]
方法二:
1.添加导包路径
# 添加导包路径 sys.path.insert(1, os.path.join(BASE_DIR, 'apps'))
说明:sys.path 是一个列表,指定项目的导包路径,当我们在项目中导包时,会依次在这个列表中的路径下查找,找到的第一个包将被导入到项目中。
['D:\\work\\meiduo-project\\meiduo_mall', 'D:\\work\\meiduo-project', 'D:\\JetBrains\\PyCharm 2020.2.5\\plugins\\python\\helpers\\pycharm_display', 'c:\\users\\11265\\appdata\\local\\programs\\python\\python39\\python39.zip', 'c:\\users\\11265\\appdata\\local\\programs\\python\\python39\\DLLs', 'c:\\users\\11265\\appdata\\local\\programs\\python\\python39\\lib', 'c:\\users\\11265\\appdata\\local\\programs\\python\\python39', 'D:\\work\\Envs\\py3_django', 'D:\\work\\Envs\\py3_django\\lib\\site-packages', 'D:\\JetBrains\\PyCharm 2020.2.5\\plugins\\python\\helpers\\pycharm_matplotlib_backend']
所以为啥导包是从工程目录下开始找,原因就在这个列表的第一项:D:\\work\\meiduo-project\\meiduo_mall ,这个路径指向的位置:
因此默认情况下,导入子应用users时,只能这样导:meiduo_mall.apps.users 这里添加导包路径后,导包路径列表为:
['D:\\work\\meiduo-project\\meiduo_mall', 'D:\\work\\meiduo-project\\meiduo_mall\\meiduo_mall\\apps', 'D:\\work\\meiduo-project', 'D:\\JetBrains\\PyCharm 2020.2.5\\plugins\\python\\helpers\\pycharm_display', 'c:\\users\\11265\\appdata\\local\\programs\\python\\python39\\python39.zip', 'c:\\users\\11265\\appdata\\local\\programs\\python\\python39\\DLLs', 'c:\\users\\11265\\appdata\\local\\programs\\python\\python39\\lib', 'c:\\users\\11265\\appdata\\local\\programs\\python\\python39', 'D:\\work\\Envs\\py3_django', 'D:\\work\\Envs\\py3_django\\lib\\site-packages', 'D:\\JetBrains\\PyCharm 2020.2.5\\plugins\\python\\helpers\\pycharm_matplotlib_backend']
第二项为添加的,指向了子应用所在的包apps
2. 注册子应用
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 注册users子应用 'users', ]
注意:包路径和文件路径的区别:
- 文件路径就是普通的文件路径,跟项目无关。而包路径是项目中的资源管理的路径,用于定位项目中的应用或这模块
- 文件路径是a/b/c 形式,包路径为a.b.c 这种形式。包路径由项目自身管理
- 包路径定位文件时,是在sys.path列表所指定的目录中,依次查找
- pycharm中新建普通文件目录使用new --> Directory,新建包方法为new --> Phthon Package , 二者有本质区别
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构