项目有很多的功能,最好我们把这些功能进行解耦, 一个应用只提供一种功能 。
创建APP
前面已经说过为manage.py添加运行参数,创建APP也是manage.py所管理的,但是命令就不是runserver了,所以为了方便,无需经常更改参数,使用命令行即可,运行这么频繁使用的功能就交给Pycharm了
打开Pycharm的Terminal或命令行,是一样的,输入
cd blog
python manage.py startapp config
注册APP
APP创建之后需要进行注册方可使用
-
打开blog/setting.py文件
-
添加APP名称config到INSTALLED_APPS
姑且就这样加入,这个存在顺序问题,暂时不考虑这么多
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'config', ]
统一管理APP
由于一个应用只提供一种功能 ,所以会有很多的APP,为了方便管理,建议将所有APP放到APPS文件夹内
-
在与manage.py同级目录创建文件夹:apps
-
将config文件夹迁移到apps文件夹内,以后的新APP同样操作
-
设置setting.py文件识别apps文件夹内APP
添加如下语句到文件中 import sys sys.path.insert(0, os.path.join(BASE_DIR, 'apps')) 阅读setting.py源码可知BASE_DIR为运行目录,只需扩展BASE_DIR即可 所以我把上述语句加在BASE_DIR语句之后 import sys BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
项目结构
mybolg # 虚拟环境
└─ blog # 项目
│ db.sqlite3 # Django 默认的数据库sqlite3文件
│ manage.py # 项目管理总管家,命令行工具
│
├─apps # 存放所有app的目录
│ └─config # 该项目的应用app
│ │ admin.py # 该应用的后台管理系统
│ │ apps.py # 该应用的配置、信息
│ │ models.py # 该应用的数据模块,定义数据模型,使用ORM框架
│ │ tests.py # 该应用自动化测试的模块
│ │ views.py # 该应用的业务视图,执行业务操作,逻辑处理
│ │ __init__.py # 声明模块,内容默认为空,此目录是一个Python包
│ │
│ ├─migrations # 数据库映射文件,会存放在该文件夹下
│ │ │ __init__.py # 声明模块,内容默认为空
│ │ │
│ │ └─__pycache__ # 字节码存放,提高运行效率
│ │
│ └─__pycache__ # 字节码存放,提高运行效率
│
└─blog # 项目的容器
│ settings.py # 该Django项目的配置文件
│ urls.py # 路由配置文件,URL分发器,网站目录地址
│ wsgi.py # WSGI架构的Web服务器,以便运行项目
│ __init__.py
│
└─__pycache__ # 声明模块,内容默认为空