Vue+Django+MySQL搭建指南(个人全栈快速开发)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 前言:本文适合有一定Vue或Django基础的开发者阅读,文中不会特别强调技术细节,只强调搭建的流程和配置,若有技术细节不懂请自行谷歌。一 技术栈选择前端Vue的所有技术栈: vue2 + vuex + vue-router + webpackUI库: element-ui网络请求:axios前端脚手架构建工具:vue-cli后端技术栈:Python+Django数据库: MySQL前端技术栈选择原因:Vue是如今最火的MVVM框架之一,它的优势是双向数据绑定、文件组件化、生态较完善等。

前言:本文适合有一定Vue或Django基础的开发者阅读,文中不会特别强调技术细节,只强调搭建的流程和配置,若有技术细节不懂请自行谷歌。

一 技术栈选择

前端Vue的所有技术栈: vue2 + vuex + vue-router + webpack

UI库: element-ui

网络请求:axios

前端脚手架构建工具:vue-cli

后端技术栈:Python+Django

数据库: MySQL

前端技术栈选择原因:Vue是如今最火的MVVM框架之一,它的优势是双向数据绑定、文件组件化、生态较完善等。

后端技术栈选择原因:Django是基于Python的一款轻量级的后端框架,适合个人全栈快速开发,我青睐于它的原因是它的ORM方便高效、配置简单清晰、自带token等。

二 项目初始化

本项目的系统环境是:Windows 

本项目的开发环境是:Node 8.11.2  + Vue 2.9.3 + Python 2.7.15 + Django 1.11.6

配置开发环境:

(1)安装Node.js 和 Python

(2)安装Django:

$ pip install Django==1.11.6

(3)安装cnpm(直接用npm可行,但需科学上网)

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

(4)安装Vue-cli脚手架构建工具

$ cnpm install -g vue-cli

工具介绍:

npm: Node.js下的包管理器。

webpack: 前端模块化工具,它主要的用途是通过 CommonJS 的语法把所有PC端需要发布的静态资源做相应的准备,比如资源的合并和打包。

vue-cli: 用户生成Vue工程模板。

三 项目搭建

(1)在命令行界面输入下列指令,创建Django应用——appName:

$ django-admin startproject appName

(2)进入创建的项目,创建应用app——childName:

$ cd appName

$ python manage.py startapp childName

(3)在appName的跟目录,利用vue-cli创建vue应用——vueName:

$ vue-init webpack vueName

(4)进入vueName,安装模块并打包:

$ cd vueName

$ cnpm install

$ cnpm run build

(5) 找到Django应用——appName根目录里的urls.py(即appName/urls.py),配置url路径:


img_c35af29d503cfba147a0bedba5fd6625.png
应用根目录的urls.py配置

(6)在childName文件根目录里的settings.py添加python的app应用:


img_945832916c72d2d744adca55d8201752.png
添加python的app应用

(7)本项目数据库为mysql,所以在childName文件根目录里的settings.py修改数据库信息:


img_0c575285f9d971db348ae3917b39bc38.png
修改数据库为mysql

(8)配置childName文件根目录里的settings.py,"DIRS"修改为['vueName/dist']:


img_95f79a5c7833b2d1e0ed261895150634.png
修改settings.py 的配置实例1

(9)修改Django的模板渲染路径及中国时区:


img_2ef27869920dc1753788a89b6638b4b1.png
修改settings.py 的配置实例2

(9) 在demo_app下views.py 中写方法,例如:


img_b34179f969cbde0d73fc117d6a08ef19.png
方法

(10)修改appName的urls,然后在childName文件夹中创建新的urls,作为views方法的urls:


img_3bbdf23f93bbe61cf81e08c8c8a3b638.png
一级urls
img_4dc6afe91bd1680e6dd4c1f347425e49.png
二级urls

此时访问数据的url为一级目录加二级目录,如‘/demo/get_data/’

(11) 在安装axios依赖,引入并配置相关模块后$ npm run build打包,然后$ python  manage.py runserver 测试接口:

下面是我写的简单测试实例:


img_d256e3264a1ec9f550cef17ceb64556e.png
前后端通信测试


img_69f5f252d779b0a2535bfd3c9f761a26.png
前后端测试成功

四 可能会遇到的坑

(1)我开启python服务器后,在url地址栏输入地址却跳转失败了,我该怎么办?

答:你写的是单页面应用,vue-router有两种模式,一种是hash,一种是history,这两种路由模式都不是真正的改变url地址,所以前端路由的设置的路由后端是访问不到,因此你必须在后端再次添加相应的url并将渲染页面指向dist下的index.html。

方法一:在urls中编写:

url(r'^$', TemplateView.as_view(template_name="index.html"))

方法二:在views中这样写

def index(request):

    return render(request, 'index.html'})

(2)我报错缺少字段是什么情况?

答:检查是否及时更新了models.py。更新的语法为:

python manage.py inspectdb > childName/models.py 

五 本项目架构上的缺点及解决办法:

缺点:不得不说,随着项目的不断扩大,本项目架构上的缺点变得越来越明显。因为,django只能渲染vue应用打包后的文件,这意味着当前端非常依赖后端数据库的数据时就会产生经常需要vue应用打包的情况,这浪费了很多时间。

解决办法:增添BFF层(用户体验适配层),利用Node做接口转接,Node调用Python接口传数据到前端,Python只做服务层。不过本方案也有明显的缺点,就是不太适合个人全栈开发。说到这里,大家如果有好的建议希望可以告诉我,十分感谢!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
存储 缓存 前端开发
Django 后端架构开发:存储层调优策略解析
Django 后端架构开发:存储层调优策略解析
45 2
|
3月前
|
存储 安全 数据安全/隐私保护
Django 后端架构开发:富文本编辑器权限管理与 UEditor 、Wiki接入,实现 Markdown 文本编辑器
Django 后端架构开发:富文本编辑器权限管理与 UEditor 、Wiki接入,实现 Markdown 文本编辑器
119 0
|
17天前
|
IDE 关系型数据库 MySQL
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
这篇文章是关于如何创建一个Django框架,介绍Django的项目结构和开发逻辑,并指导如何创建应用和编写“Hello, World!”程序的教程。
32 3
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
|
19天前
|
JavaScript 前端开发 API
vue获取图片的blob传给django后端
vue获取图片的blob传给django后端
24 4
|
19天前
|
JavaScript 前端开发 Python
django接收前端vue传输的formData图片数据
django接收前端vue传输的formData图片数据
19 4
|
17天前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
47 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
3月前
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
54 2
|
3月前
|
消息中间件 存储 监控
Django后端架构开发:Celery异步调优,任务队列和调度
Django后端架构开发:Celery异步调优,任务队列和调度
59 1
|
3月前
|
C++ Python
Django视图函数VS类视图:如何选择最适合你的开发方式?
【8月更文挑战第31天】本文对比了Django中的函数视图和类视图。函数视图直接处理HTTP请求和响应,灵活且易于维护,适用于简单业务逻辑;类视图基于Python类,提供更丰富的功能和更高的灵活性,适合处理复杂业务逻辑。选择哪种视图取决于具体需求,合理使用两者可帮助你构建高效且易维护的Django应用。
39 0
|
3月前
|
JavaScript 前端开发 API
全栈开发革命来临!Vue.js与Node.js联手,打造前后端无缝对接的奇迹之作!
【8月更文挑战第30天】在Web开发领域,前后端分离与协作至关重要。Vue.js以其轻量级和易用性深受前端开发者喜爱,而Node.js则以高性能和事件驱动特性在后端领域崭露头角。二者结合开启了全栈开发新篇章,通过RESTful API或GraphQL实现高效稳定通信。本文以示例说明如何使用Vue.js和Node.js构建全栈应用,从前端Vue组件到后端Express服务器,展示了数据获取与展示的全过程。这种组合提供了一种高效简洁的全栈开发方案,使开发者能更专注于业务逻辑实现。
168 0