从零到一 django + vue 构建前后端分离项目
(本文在win10环境下进行)
django 和 vue 的优点
django的python血统,开发起来基本上是站在巨人的肩膀上,用起来顺手,加上drf这个restful API 框架,SaltStack、Ansible可做配置管理,celery做任务队列,还有它的orm…
vue 数据双向绑定,组件化开发,国人开发维护,看文档学起来方便,学习曲线平滑
(哈哈,笔者前端很弱,只能选个简单的来入门)
django 和 vue 怎么结合起来
选择了Vue.js的前端渲染,自然放弃了Django的后端模板引擎渲染。
保留了Django的 Controller (URLconf) 来实现前端路由的父级路由,可以达到不同页面使用不同的前端框架, 页面内部使用各自独有的前端路由的效果.
保留了Django的 Model ,Django的ORM好用,而且可以配合Django Admin。
1 环境搭建
(1) node.js 环境的搭建
node.js安装
可以从Node.js官网下载对应平台的安装程序,网速慢的话,去网盘下载下载地址
在windows上安装务必选择全部组件, 记得勾选
add to path
安装完成后 ,打开cmd, 输入
node -v
,如果安装正常,应该能看到v7.6.0
这样的输出npm 安装
npm是node.js的包管理工具, 在用node.js开发时,要用到别人写的包,可以直接用npm来进行下载
npm实际上在安装node.js过程中顺带已经装好了,在终端输入
npm -v
,应该可以看到4.1.2
这样的输出nrm安装
nrm的作用 实际上提供了最常用的npm包镜像地址(类似于python包的豆瓣源,清华源),能够快速切换下载安装包的服务器地址.
1.运行
npm i nrm -g
全局安装nrm包2.使用
nrm ls
查看当前所有可用的镜像源地址以及当前所使用的镜像源地址;3.使用
nrm use npm
或nrm use taobao
切换不同的镜像源地址;(我是直接使用了淘宝的镜像源地址,毕竟我在杭州,哈哈)
cnpm 安装
cnpm 也是从国内的服务器来下载包,实际上装了nrm,可以不用再装cnpm.
运行
npm install -g cnpm --registry=https://registry.npm.taobao.org
全局安装cnpmvue-cli 安装
vue-cli是快速创建一个vue项目的脚手架,介绍请自行谷歌
运行
npm install -g vue-cli
全局安装vue-cli
(2)python 环境的搭建
python 安装
可以从python官网 下载对应平台的安装程序,也可以网盘下载
在windows上安装, 记得勾选
add to path
python虚拟环境工具安装
1.运行
pip install virtualenv
安装virtualenv2.cd到想安装的目录,运行
virtualenv -p python3.6 myenv3.6
(笔者一般是创建一个envs文件夹,专门放虚拟环境的文件包)3.运行
pip install virtualenvwrapper-win
安装virtualenvwrapper4.设置环境变量:进入系统属性设置系统变量,添加WORKON_HOME环境变量到你指定的文件夹,这里新建的文件夹。(我的话就是把这个envs文件夹添加到环境变量)
5.运行
workon
,应该能看到Pass a name to activate one of the following virtualenvs:myenv3.6
这样的输出.更换pip国内源
直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下
[global] trusted-host = pypi.mirrors.ustc.edu.cn index-url = https://pypi.mirrors.ustc.edu.cn/simple
完整的虚拟环境安装流程可以看 文档地址
2 项目流程
新建一个项目文件夹,把前后端的项目都放到该文件夹下(不放一起也无所谓,笔者习惯放一起)
(1)vue项目
新建项目
运行
vue init webpack fronted
生成fronted项目名的vue项目文件,默认回车即可(eslink是es6检测es6语法格式的,test是测试的 ,这两个如果不用的话,可以选no),默认会安装vue-router
项目中各个文件的含义 该博客简单介绍了vue-cli(博客是1年前的,不过入个门还是可以的)
安装依赖
cd fronted
进入vue项目目录,运行npm install
安装依赖,会在项目目录下生成node_module文件note : 我在安装过程中,下载chorm的插件时报错了(墙是真滴烦)
报错信息:
> chromedriver@2.33.2 install D:\study\vue\vue-devtools\node_modules\chromedriver > node install.js Downloading https://chromedriver.storage.googleapis.com/2.33/chromedriver_win32.zip Saving to C:\Users\ADMINI~1\AppData\Local\Temp\chromedriver\chromedriver_win32.zip ChromeDriver installation failed Error with http(s) request: Error: read ECONNRESET npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! chromedriver@2.33.2 install: `node install.js`
解决方法:
npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
安装完,就可以开始vue项目的开发了.
vue开发看这篇就够了 哈哈,这个博客标题够唬人的,不过我这个做后端的看完这篇文章,也觉得收获满满.
一些常用指令
npm run dev # 在开发配置下运行vue项目 npm run start # 同上 npm run build # 将vue项目 通过webpack打包 生成原生js,css文件,以及index.html 在会生成在dist文件
npm的使用命令大全 这个博客可以看下,平时查个指令也是很方便的
在vue中使用scss
使用vue-cli搭建项目有内置的webpack方案,但是没有使用scss。vue提供了初始化的webpack模板,其中使用了vue-loader。vue-loader默认只支持sass,要是想要使用scss,必须安装node-sass和sass-loader,并修改相关webpack配置。具体操作如下:
(1)安装
node-sass
和sass-loadr
npm install node-sass --save-dev npm install sass-loader --save-dev
note :记得要在vue项目目录下运行该指令, 这样才会在该项目中安装
(2)修改相关webpack配置 打开webpack.base.config.js, 在module里的rules中加上:
{test: /\.scss$/,loaders: ["style", "css", "sass"]},
(3)如果要在vue文件中的style使用scss,则在 style处声明:
<style rel="stylesheet/scss" lang="scss"></style>
(2)django项目
新建django项目
解决跨域问题
开发调试时,实际上是开两个server,一个是8000端口的django server,一个是8080端口的node server
有两种解决方法,一种是在Vue.js层上做转发(proxy Table).另一种是在django层注入header.这里介绍第二种方法:
(1)安装
pip install django-cors-headers
(2)配置
#settings.py# 中间件那里添加 注意 中间件的加载顺序别弄错 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
到这里就可以开始做django项目的开发,以及和vue项目之间的联调了.
(3)项目完成后整合
webpack 打包 vue项目
vue项目目录下 ,运行
npm run build
生成webpack打包后的dist文件夹,文件夹下有static
文件夹和一个index.html
配置django 模板搜索路径和静态文件搜索路径
在django项目中新建一个fronted文件夹,并把dist文件复制到里面
#settings.py #模板搜索路径配置 TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates',# 'DIRS': [os.path.join(BASE_DIR, 'templates')],**'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',],},}, ]# 配置静态文件搜索路径 STATICFILES_DIRS = [os.path.join(BASE_DIR, "frontend/dist/static"), ]# 把跨域开启 CORS_ORIGIN_ALLOW_ALL = False
3 项目上线
经过整合,django项目已经基本上完成了,也可以使用runserver
运行起来了.但是生产环境不可能用runserver
,
这里我有写过一篇django项目上线的博客 地址
本文为个人学习记录.
从零到一 django + vue 构建前后端分离项目相关推荐
- python+Django+vue 搭建前后端分离项目
步骤一 : 创建项目所在文件夹. 步骤二: 进入CMD模式输入 : django-admin startproject backend 步骤三 : 进入backend 步骤四:查看Django后端服务 ...
- python+django+vue搭建前后端分离项目Part1
文章目录 Python环境搭建 安装django框架 创建django项目 新建static静态文件夹 创建django App(后端) 创建vue项目(前端) 集成vue项目到django 打包vu ...
- python+django+vue搭建前后端分离项目Part2——前端Vue
文章目录 创建vue项目 主要文件及其作用 src/components/ src/router/index.js src/main.js static/ 创建vue项目 (my_django) XX ...
- python+django+vue搭建前后端分离项目Part3——后端django
文章目录 创建django项目 数据库创建和连接 创建 Django APP 后端搭建 模型层model.py 视图层view.py 路由配置 数据迁移 参考文章 创建django项目 (my_dja ...
- Vue第三部分(2):Vue-CLI构建前后端分离项目以及打包部署
通过上一节,我们学习了vue脚手架的相关概念以及构建过程,那么开始我们的前后端项目吧 Vue-CLI构建前后端分离项目 1.项目环境初始化 1.安装 axios vue-axios(记得执行命令要进入 ...
- Django+Vue,前后端分离,实现用户权限认证
网上教程一大堆,要么思路不够清晰,要么给你扔一大段代码,只有几行注释.... 看了我这个,你奶奶来都能实现前后端分离用户权限认证! Django 采用token认证方式,使用 rest_framewo ...
- B站云E办Vue+SpringBoot前后端分离项目——MVC三层架构搭建后台项目
本项目来源B站云E办,笔记整理了项目搭建的过程和涉及的知识点.对于学习来说,不是复制粘贴代码即可,要知其然知其所以然.希望我的笔记能为大家提供思路,也欢迎各位伙伴的指正. 项目前端学习笔记目录 B站云 ...
- (五)Debian Linux中部署Spring Boot + Vue的前后端分离项目详细过程(arm64/aarch64架构下)
专题系列往期文章目录 (一)移动端安卓手机改造成linux服务器&Linux中安装软件踩坑历险记 (二)Debian Linux系统中安装oracle JDK1.8详细过程(arm64/aar ...
- Vue 实现前后端分离项目
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Vue实现前后端分离项目的初体验 经过之前学习的Vue的知识: vue基本指令 vue组件 vue- ...
最新文章
- 电商系统如何做搜索引擎?
- MySQL 5.5 的COMPRESSED INNODB 表
- 黑鹰长期班.边程浪子系列教程
- 免费在线制图神器!内置13个类别上百个模板,不上水印支持中文版,GitHub标星已破1万2...
- 揭秘全球首次互联网8K直播背后的技术实现
- LGB + KFold 代码 (1)
- jmeter json断言_Jmeter接口测试数据库断言的实现与设计
- [php]Undefined offset: 0错误
- 写博客的好处,专家告诉你
- Flutter进阶—质感设计之模态底部面板
- Kotlin 势必取代 Java?
- 计算机主板供电,台式机计算机主板供电电路.doc
- 编写一个掷色子猜大小的游戏
- 教你用iTOL轻松绘制高颜值系统进化树
- Consider defining a bean of type的问题
- 语音备忘录里的录音怎么导出来
- HDU, 3579 Hello Kiki
- 自制网关切换器实例(转)
- 统计学中特征函数理解和学习
- 九州云出席全球分布式云大会,基于5G MEC的车路协同创新引关注
热门文章
- 易基因单细胞转录组测序(smart-seq2)|技术推介
- 计算机毕业设计JAVA软件工程专业教辅平台课程子系统mybatis+源码+调试部署+系统+数据库+lw
- 关于zotero如何在另一台电脑上继续同步工作的问题
- 五大评价偏误 | 管理者如何做到客观评价员工?
- 【Java技术专题】「Guava技术系列」Guava-Collections实战使用相关Guava不一般的集合框架
- java actioncontext_Action访问ActionContext | 学步园
- geogebra中函数的定义域的输入
- opencv 3 速成笔记(1): 安装和配置开发环境
- 基于Part Affinity Fields的姿态估计后处理笔记
- 安卓开发中Bundle使用方法: