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 , 二者有本质区别