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据option的value值快速设定初始的selected选项
Aug 13 Javascript
ExtJS 设置级联菜单的默认值
Jun 13 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
Dec 02 Javascript
VueJs与ReactJS和AngularJS的异同点
Dec 12 Javascript
JavaScript中的子窗口与父窗口的互相调用问题
Feb 08 Javascript
JavaScript原生实现观察者模式的示例
Dec 15 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
Feb 13 jQuery
ES6下子组件调用父组件的方法(推荐)
Feb 23 Javascript
对layui中table组件工具栏的使用详解
Sep 19 Javascript
微信小程序swiper实现文字纵向轮播提示效果
Jan 21 Javascript
JavaScript实现随机点名器
Mar 25 Javascript
vue中template的三种写法示例
Oct 21 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
PHP类的反射用法实例
2014/11/03 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
JS 继承实例分析
2008/11/04 Javascript
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
Python操作MongoDB详解及实例
2017/05/18 Python
python实现flappy bird小游戏
2018/12/24 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
Python如何访问字符串中的值
2020/02/09 Python
python deque模块简单使用代码实例
2020/03/12 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
Python LMDB库的使用示例
2021/02/14 Python
C++面试题:关于链表和指针
2013/06/05 面试题
shell的种类有哪些
2015/04/15 面试题
外国语学院毕业生自荐信
2013/10/28 职场文书
市场营销专业推荐信
2013/11/03 职场文书
给老师的一封建议书
2014/03/13 职场文书
班组长安全工作职责
2014/07/15 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
春晚观后感
2015/06/11 职场文书