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 相关文章推荐
学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例
Mar 10 Javascript
常用一些Javascript判断函数
Aug 14 Javascript
老生常谈combobox和combotree模糊查询
Apr 17 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
May 08 jQuery
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
May 26 jQuery
vue通过点击事件读取音频文件的方法
May 30 Javascript
使用JS代码实现俄罗斯方块游戏
Aug 03 Javascript
详解小程序如何避免多次点击,重复触发事件
Apr 08 Javascript
谈谈IntersectionObserver懒加载的具体使用
Oct 15 Javascript
JS window对象简单操作完整示例
Jan 14 Javascript
js生成1到100的随机数最简单的实现方法
Feb 07 Javascript
Vue中强制组件重新渲染的正确方法
Jan 03 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
对Session和Cookie的区分与解释
2007/03/16 PHP
discuz安全提问算法
2007/06/06 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
Python中functools模块的常用函数解析
2016/06/30 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python