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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 前言:本文适合有一定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只做服务层。不过本方案也有明显的缺点,就是不太适合个人全栈开发。说到这里,大家如果有好的建议希望可以告诉我,十分感谢!

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
204 45
|
30天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
2月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
2月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
2月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
74 2
|
3月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
3月前
|
SQL 关系型数据库 MySQL
PHP与MySQL协同工作的艺术:开发高效动态网站
在这个后端技术迅速迭代的时代,PHP和MySQL的组合仍然是创建动态网站和应用的主流选择之一。本文将带领读者深入理解PHP后端逻辑与MySQL数据库之间的协同工作方式,包括数据的检索、插入、更新和删除操作。文章将通过一系列实用的示例和最佳实践,揭示如何充分利用这两种技术的优势,构建高效、安全且易于维护的动态网站。
|
13天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
13天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
42 3
|
13天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
54 2