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 相关文章推荐
javascript时区函数介绍
Sep 14 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
使用jQuery实现星级评分代码分享
Dec 09 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
May 24 Javascript
jQuery 更改checkbox的状态,无效的解决方法
Jul 22 Javascript
轻松搞定js表单验证
Oct 13 Javascript
Bootstrap的class样式小结
Dec 01 Javascript
EsLint入门学习教程
Feb 17 Javascript
利用Javascript裁剪图片并存储的简单实现
Mar 13 Javascript
详解基于node.js的脚手架工具开发经历
Jan 28 Javascript
解决vue+router路由跳转不起作用的一项原因
Jul 19 Javascript
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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
vue组件学习教程
2017/09/09 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
解决option标签selected="selected"属性失效的问题
2017/11/06 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
Python eval函数原理及用法解析
2020/11/14 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
公务员培训心得体会
2013/12/28 职场文书
孩子教育的心得体会
2014/09/01 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
Golang获取List列表元素的四种方式
2022/04/20 Golang
mysql数据库如何转移到oracle
2022/12/24 MySQL