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

 

posted @ 2021-01-25 23:37  foreast  阅读(376)  评论(0编辑  收藏  举报