Django+Vue.js搭建前后端分离项目的示例


Posted in Javascript onAugust 07, 2017

在写这篇文章的时候,顺带学习了一下关于Markdown的使用方法。

笔者是个渣渣,一切都是自己在摸索的学着,所以也谈不上什么体系、系统学习。在这里主要是为了实现把项目前后端分离开。

这里假设你的电脑上所需的django、vue.js已经有了,如果没有,往下拉就是vue.js的安装流程。django前面写过了,就不赘述了。

一,正常搭建前后端分离项目流程

1.创建django项目

命令:

django-admin startproject ulb_manager

结构:

├── manage.py
└── ulb_manager
  ├── __init__.py
  ├── settings.py
  ├── urls.py
  └── wsgi.py

2.进入项目根目录,创建一个app作为项目后端

命令:

cd ulb_manager
python manage.py startapp backend

结构比上面最基本的,多了一块backend

3.使用vue-cli创建一个vue.js项目作为项目前端

命令:

vue-init webpack frontend

界面:

Project name:(默认回车键)

Project description:(默认回车键)

Auther:(输入自己的名字,随意)

...:(默认yes和回车键,暂时不太懂,刚开始接触,网上也没查到这一块东西,就全部选择默认或者Yes了)

结构多了一块frontend

结构总结:

项目根目录有两个新文件夹,一个叫backend,一个叫frontend,分别是:backend Django的一个app、frontend Vue.js项目

4.使用webpack打包Vue.js项目

命令:

cd frontend
npm install
npm run build

5.使用Django的通用视图TemplateView

在项目根目录下urls.py(即ulb_manager/urls.py)使用通用视图创建最简单的模板控制器。

代码:

urlpatterns = [
  url(r'^admin/', admin.site.urls),
  url(r'^$',TemplateView.as_view(template_name="index.html")),
  #url(r'^api/',include('backend.urls', namespace='api'))
  #最后一行代码我注释掉,因为运行报错:Error:No module named 'backend.urls',暂时解决不掉,但是我运行的时候,注释掉这行代码,是能正常运行的。
]

6.配置Django项目的模板搜索路径

打开settings.py(即ulb_manager/settings.py)找到TEMPLATES配置项,修改如下:

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',
      ],
    },
  },
]

PS:之前学习django,是要在settings.py下的INSTALLED_APPS配置项下添加app的,所以我自己添加了'backend'。

7.配置静态文件搜索路径

打开settings.py(ulb_manager/settings.py),找到STATICFILES_DIRS配置项,配置如下:

# Add for vue.js
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, "frontend/dist/static"),
]

如果没有,自己添加。

到这里,运行django项目已经可以正常运行了。正常运行的界面如下:

Django+Vue.js搭建前后端分离项目的示例

运行界面

二,安装vue.js

如果电脑上,没有vue.js,以下是安装vue.js的过程:

1.node.js

vue.js的推荐安装环境是node.js,因此,我是先安装的node.js。

登陆node.js官网,下载最新的v6.11.1版本。

2.npm

集成于Node.js中,不需要装。

3.cnpm

在命令行中输入命令:

npm install -g cnpm --registry=http://registry.npm.taobao.org

等待安装完成。

4.安装vue-cli脚手架构建工具

在命令行中输入命令:

npm install -g vue-cli

等待安装结束。

到此,vue-cli已经安装完成。

PS:暂时摸不清楚如何把文件的目录树结构在Markdown里写出来。

有所修改,因为完全按照原版搬上来根本无法运行。写了一个最基本的框架。像个无头苍蝇一样……(而且也买不起云主机……新手也没必要买)

Markdown用起来觉得很自由,而且还能调用一些html的指令,还是蛮有意思的,虽然还没摸清楚,到底能调用多少、哪些指令……

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Opacity.js
Jan 22 Javascript
jquery 实现的全选和反选
Apr 15 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
May 26 Javascript
js检查页面上有无重复id的实现代码
Jul 17 Javascript
3种Jquery限制文本框只能输入数字字母的方法
Dec 03 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
详解VueJs前后端分离跨域问题
May 24 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
Mar 05 Javascript
vue滚动插件better-scroll使用详解
Oct 18 Javascript
Vue实现简易计算器
Feb 25 Javascript
vue 页面回退mounted函数不执行的解决方案
Jul 26 Javascript
vue ant design 封装弹窗表单的使用
Jun 01 Vue.js
React进阶学习之组件的解耦之道
Aug 07 #Javascript
详解前端路由实现与react-router使用姿势
Aug 07 #Javascript
React中使用collections时key的重要性详解
Aug 07 #Javascript
react路由配置方式详解
Aug 07 #Javascript
深入理解vue.js中$watch的oldvalue与newValue
Aug 07 #Javascript
JavaScript调试之console.log调试的一个小技巧分享
Aug 07 #Javascript
react native仿微信PopupWindow效果的实例代码
Aug 07 #Javascript
You might like
PHP中使用smarty生成静态文件的例子
2014/04/24 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
起点页面传值js,有空研究学习下
2010/01/25 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python实现哈希表
2014/02/07 Python
Python程序设计入门(2)变量类型简介
2014/06/16 Python
Python通过正则表达式选取callback的方法
2015/07/18 Python
说一说Python logging
2016/04/15 Python
Python随机函数random()使用方法小结
2018/04/29 Python
python读取文本中的坐标方法
2018/10/14 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
基于python实现复制文件并重命名
2020/09/16 Python
详解Python流程控制语句
2020/10/28 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
舞蹈教师自荐信
2014/01/27 职场文书
技术负责人岗位职责
2015/02/10 职场文书
学校运动会通讯稿
2015/07/18 职场文书
导游词之清晏园
2019/11/22 职场文书
js实现自动锁屏功能
2021/06/02 Javascript
SQL基础的查询语句
2021/11/11 MySQL
浅谈Vue的computed计算属性
2022/03/21 Vue.js