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写的一个链表实现代码
Oct 25 Javascript
js 获取(接收)地址栏参数值的方法
Apr 01 Javascript
jquery实现简单实用的弹出层效果代码
Oct 15 Javascript
jQuery实现HTML表格单元格的合并功能
Apr 06 Javascript
原生JS实现旋转木马式图片轮播插件
Apr 25 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
Sep 27 Javascript
jQuery焦点图左右转换效果
Dec 12 Javascript
jQuery事件详解
Feb 23 Javascript
javascript变量提升和闭包理解
Mar 12 Javascript
vue+SSM实现验证码功能
Dec 07 Javascript
解决vue一个页面中复用同一个echarts组件的问题
Jul 19 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 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
php object转数组示例
2014/01/15 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
理解JavaScript中的对象 推荐
2011/01/09 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
python实现DES加密解密方法实例详解
2015/06/30 Python
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
Python构建XML树结构的方法示例
2017/06/30 Python
Python遍历numpy数组的实例
2018/04/04 Python
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
外贸业务员岗位职责
2013/11/24 职场文书
服装公司总经理岗位职责
2013/11/30 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript