M(Django) + C(Django) + MVVM (Vue.js) = M + MVVM + C = MMVVMC
Django3.5
Mysql
Npm(node.js默认安装npm)
django-admin startproject ulb_manager
cd ulb_manager
python manage.py startapp backend
项目结构如上
vue-init webpack frontend
在cmd命令提示符里输入上面命令(ulb_manager项目文件夹中)
cd frontend
npm install
npm run build
进入项目前端文件夹中,安装npm(建议不要npm全部安装,包很大,速度慢)
如果npm install 过程中出现卡顿,长时间安装不上的情况,建议npm使用cnpm命令代替
cnpm不影响原有npm命令,只不过安装过程中可以走npm包在国内的镜像,速度快很多。
npm install -g cnpm –registry=https://registry.npm.taobao.org
-g是说全局安装,这样可在任何目录下进行安装
from django.conf.urls import url,include
from django.contrib import admin
from django.views.generic import TemplateView
import backend.urls
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', TemplateView.as_view(template_name="index.html")),
url(r'^api/', include('backend.urls', namespace='api'))
]
找到项目根 urls.py (即ulb_manager/urls.py),引入django的一些库,访问/时返回index.html
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 'DIRS': [],
'DIRS': ['frontend/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',
],
},
},
]
settings.py (ulb_manager/settings.py),修改templates如上
# Add for Vue.js
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "frontend/dist/static"),
]
settings.py (ulb_manager/settings.py),增加设置静态文件路径
此时访问首页可以看见VUE配置成功的显示
npm run dev
pip install django-cors-headers
Django层注入header,安装
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
配置,注意中间件加载顺序
本章节还未测试,请看参考文档:
其他参考文档: