Vue.js+Django 实现前后端分离
准备
环境的搭建
- node.js
- vue-cli
- python
- django
集成开发环境的搭建
- webstorm
- pycharm
- 安装参考这里,激活破解以及设置,可以在我的github/gitee中clone下来
起步
node.js安装
官网下载exe
傻瓜式下一步即可
检查node版本
1 | node --version |
npm介绍
node的包管理工具,详情可以参考简书:NPM简介和安装
检查npm版本
1 | npm --version |
入门
npm换源 - 淘宝源
1.临时使用
1 | npm --registry https://registry.npm.taobao.org install express |
2.持久使用
1 | npm config set registry https://registry.npm.taobao.org |
vue脚手架的安装
1 | npm install -g @vue/cli |
安装 @vue/cli-init
1 | npm i -g @vue/cli |
进阶
创建vue项目
vue初始化基于webpack的my-project项目(项目名不能用大写字母)
1 | vue init webpackage project_name |
下面有一坨选项
1 | ? Project name my-project |
vue init webpack my-project 选项详解
先运行起来再说
1 | npm run dev |
加一个路由
在router\index.js
中,加上一个
1 | { |
再去vue_project\src\components
里面创建一个.vue文件,内容如下
1 | // 这里直接就复制那个Hello的就OK了 |
高级
易用、简洁且高效的http库
官网在这里:http://axios-js.com/
安装axios,实现vue连接django
1 | npm install axios --save |
vue-cli注册axios
首先在 main.js 中引入 axios
1 | import axios from 'axios' |
这时候如果在其它的组件中,是无法使用 axios 命令的。所以我们将 axios 改写为 Vue 的原型属性
1 | Vue.prototype.$http= axios |
在 main.js 中添加了这两行代码之后,就能直接在组件的 methods 中使用 $http命令
例如
1 | methods: { |
配置 axios
实际上只有 url 是必须的
对于get请求
1 | axios.get('/user', { |
更多详情参考:vue-cli 引入axios及跨域使用
然后就访问会报错,别慌
1 | Access to XMLHttpRequest at 'http://127.0.0.1:8000/api/test/' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. |
因为不允许跨站访问,也叫做跨域,这里我们就需要配置一下这个跨域了
这里参考:卖火柴的小女孩的vue2.0 proxyTable配置,解决跨域
难点
上面的报错依旧没有解决,这并不是因为解决方案不正确,而是有其他的原因
两天未解决的问题
在使用vue和axios进行跨域请求的时候,一直以为是vue这边没有配置好,
尝试了很久,查了很多关于vue跨域的资料,还使用jq中的ajax直接进行访问都不好使
但是访问这个好使,这就证明不是vue+axios和边的问题了,这里仅仅是指定一下url即可,在config/index.js
中配置的仅仅的让test.vue
文件中不用写上全部路径
原来是django里面没有设置允许跨域访问的原因,O(∩_∩)O哈哈~
django解决跨域请求的问题
解决方案
具体实现如下:
1.安装django-cors-headers
1 | pip install django-cors-headers |
2.在django的设置文件setting.py
中,加入
1 | INSTALLED_APPS = [ |
之后报错,别慌!
1 | django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues: |
然后在配合的这个全部解决了问题,完美简直
项目的源码地址
gitee:vue_django_project
大家可以clone下来进行参考,如果觉得有用的可以给小编star
一下,你的支持就是我的动力!