项目结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
   | django ## 项目名 ├─ app ## 功能部件,一个项目里面可以有多个app,所有的APP共享项目资源 │    ├─ __init__.py │    ├─ admin.py │    ├─ apps.py │    ├─ migrations ## 数据库迁移记录 │    │    └─ __init__.py │    ├─ models.py ## 模型定义文件,和数据库模型相关的代码 │    ├─ tests.py │    └─ views.py ## 视图文件 ├─ django #与项目同名的文件夹 │    ├─ __init__.py │    ├─ __pycache__ │    │    ├─ __init__.cpython-37.pyc │    │    └─ settings.cpython-37.pyc │    ├─ settings.py //主配置文件 │    ├─ urls.py //url路由文件 │    └─ wsgi.py └─ manage.py //Django管理主程序
   | 
 
项目搭建过程
使用虚拟环境 Virtualenv
安装virtualenv
win+r打开控制台输入cmd
输入pip install virtualenv
进入一个希望创建虚拟python环境的文件夹下面,创建一个虚拟环境(此处为venv)
1 2
   | cmd>D:>cd virtualenv  cmd>D:\virtualenv>virtualenv venv
   | 
 
(本机虚拟环境已建在C:/users/joy/django下)
在pycharm中打开setting添加本地python环境

选择刚刚创建的虚拟环境

开启关闭virtualenv
进入venv目录 
激活 :
1
   | cmd>D:\virtualenv\venv>Scripts\activate
   | 
 
关闭 :
1
   | (venv) D:\virtualenv\venv>deactivate
   | 
 

注意
virtualenv 创建的虚拟环境与主机的 Python 环境完全无关,
你主机配置的库不能在 virtualenv 中直接使用。 
你需要在虚拟环境中利用 pip install 再次安装配置后才能使用。
参考文章
windows下使用pycharm配置python的virtualenv环境
创建app
在pycharm下方的terminal终端中输入命令:
1
   | python manage.py startapp cmdb
   | 
 
这样就创建了一个叫做cmdb的APP,django自动生成“cmdb”文件夹。
创建的app需要在settings.py里注册:
1 2 3 4 5 6 7 8 9 10 11
   | 
  INSTALLED_APPS = (      'django.contrib.admin',     'django.contrib.auth',     'django.contrib.contenttypes',     'django.contrib.sessions',     'django.contrib.messages',     'django.contrib.staticfiles',     'cmdb', )
 
  | 
 
创建MySQL数据库
在pycharm中打开File->Settings,在左边栏找到当前项目,选择Project Interpreter
点击右边栏右上角的加号:

搜索pymsql,在点击左下角的Install Package
在settings.py中的DATABASES下填写数据库信息,例:
1 2 3 4 5 6 7 8 9
   | DATABASES = {     'default': {         'ENGINE': 'django.db.backends.mysql',         'NAME': 'xxx',           'USER': 'xxx',           'PASSWORD': 'xxx',           'HOST': 'xxx',       } }
  | 
 
settings.py设置
将settings.py中的:
1 2
   | LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC'
   | 
 
改成
1 2
   | LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai'
   | 
 
让Django支持中文
pycharm终端命令
启动服务
1
   | python manage.py runserver
   | 
 
数据迁移
1 2 3
   |  python manage.py makemigrations python manage.py migrate
 
  | 
 
跨域问题
须要在Django层注入header,用Django的第三方包django-cors-headers来解决跨域问题:
1
   | pip install django-cors-headers
   | 
 
settings.py 修改:
1 2 3 4 5 6 7 8 9 10 11 12
   | MIDDLEWARE = [     'django.middleware.security.SecurityMiddleware',     'django.contrib.sessions.middleware.SessionMiddleware',     'corsheaders.middleware.CorsMiddleware',     'django.middleware.common.CommonMiddleware',     'django.middleware.csrf.CsrfViewMiddleware',     'django.contrib.auth.middleware.AuthenticationMiddleware',     'django.contrib.messages.middleware.MessageMiddleware',     'django.middleware.clickjacking.XFrameOptionsMiddleware', ]   CORS_ORIGIN_ALLOW_ALL = True
   | 
 
注意中间件的添加顺序
集成vue,实现前后端分离
在前端项目中执行npm run build,前端项目下会生成一个dist文件夹
把前端项目文件夹(例如onehome)放到Django项目(onehomeServer)里
修改django的settings文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   | TEMPLATES = [     {         'BACKEND': 'django.template.backends.django.DjangoTemplates',         'DIRS': ['onehome/dist'],         'APP_DIRS': True,         'OPTIONS': {             'context_processors': [                 'django.template.context_processors.debug',                 'django.template.context_processors.request',                 'django.contrib.auth.context_processors.auth',                 'django.contrib.messages.context_processors.messages',             ],         },     }, ]
 
  STATICFILES_DIRS = [     os.path.join(BASE_DIR, "onehome/dist/static"), ]
   | 
 
修改django的主目录的urls文件:
1 2 3 4 5 6 7
   | from django.conf.urls import url, include from django.contrib import admin from django.views.generic import TemplateView urlpatterns = [     url(r'^admin/', admin.site.urls),     url(r'^$', TemplateView.as_view(template_name="index.html")),  ]
   | 
 
启动django服务,访问localhost:8000 则可以出现vue的首页。
插件
django-extensions
可检查urls是不是已经被添加
安装:pip install django-extensions
将’django_extensions’添加到settings.py的INSTALLED_APPS中
然后列出所有urls:python manage.py show_urls