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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 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只做服务层。不过本方案也有明显的缺点,就是不太适合个人全栈开发。说到这里,大家如果有好的建议希望可以告诉我,十分感谢!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
关系型数据库 MySQL 数据库
django4版本提示 django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26)
在学习Django时,用户遇到`django.db.utils.NotSupportedError`,提示需要MySQL 8.0.25或更高版本,但其系统上是5.7.26。为解决这个问题,用户决定不升级MySQL,而是选择注释掉Django源码中的数据库版本检查。通过Python命令行找到Django安装路径,进入`db/backends/base/base.py`,注释掉`self.check_database_version_supported()`函数
206 0
|
12天前
|
安全 Python
102-Django开发学校教务管理系统源码+ER图
**Django学校教务管理系统**是使用Python的Django框架开发的,专注于学生和教师的互动。系统功能包括班级管理(教师添加和管理学生,学生查看信息)、分数管理(教师打分和更新,学生查看详情)、作业管理(上传、提交和批改)、师生通讯、发布公告以及用户配置。系统支持管理员、教师和学生的不同角色和权限,特点是互动性强、操作便捷且安全性高。通过这个系统,教学过程变得更加高效,有助于提升教学质量和学习效果。
22 4
|
13天前
|
API 数据安全/隐私保护 Python
101-Django开发毕业设计学院ERM系统源码
使用Django框架开发的学校ERP系统旨在提升现代教育的管理效率。该系统针对学生、老师和管理员三类用户设计,提供登录、考勤管理、分数查看、课程表、教学管理等功能。技术栈包括Python 3.11和Django 5,以及djangorestframework用于API交互。系统实现了智能化的操作,优化了学校的管理平台,提高了服务水平和教学质量。
26 0
|
21天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
33 0
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
22天前
|
Python
Django开发——配置环境
Django开发——配置环境
|
24天前
|
测试技术 数据库 开发者
Django的测试工具与框架:提升开发效率与质量
【4月更文挑战第15天】本文探讨了Django的测试工具和框架,包括单元测试、集成测试和功能测试,以及其基于unittest的测试框架特点,如易于集成、丰富断言和数据库支持。通过编写全面测试、采用TDD、自动化测试等方式,开发者能提升开发效率和代码质量。利用Django的测试支持对确保应用稳定性、用户体验及软件可维护性至关重要。
|
24天前
|
开发框架 安全 数据库
使用Python中的Django框架进行Web应用开发
【4月更文挑战第15天】Django,作为Python中一个久负盛名的Web开发框架,以其强大的功能、优雅的设计和高效的开发流程,赢得了广大开发者的青睐。无论是初创企业还是大型组织,Django都能帮助开发者快速构建出稳定、安全的Web应用。本文将深入探讨Django框架的核心特性、使用方法以及在实际开发中的应用。
|
27天前
|
关系型数据库 MySQL 数据库连接
Django(四):Django项目部署数据库及服务器配置详解(MySQL)
Django(四):Django项目部署数据库及服务器配置详解(MySQL)
83 11
|
29天前
|
监控 数据可视化 安全
智慧工地SaaS可视化平台源码,PC端+APP端,支持二开,项目使用,微服务+Java++vue+mysql
环境实时数据、动态监测报警,实时监控施工环境状态,有针对性地预防施工过程中的环境污染问题,打造文明生态施工,创造绿色的生态环境。
15 0
智慧工地SaaS可视化平台源码,PC端+APP端,支持二开,项目使用,微服务+Java++vue+mysql
|
1月前
|
JavaScript Java 关系型数据库
基于 java + Springboot + vue +mysql 大学生实习管理系统(含源码)
本文档介绍了基于Springboot的实习管理系统的设计与实现。系统采用B/S架构,旨在解决实习管理中的人工管理问题,提高效率。系统特点包括对用户输入的验证和数据安全性保障。功能涵盖首页、个人中心、班级管理、学生管理、教师管理、实习单位管理、实习作业管理、教师评分管理、单位成绩管理和系统管理等。用户分为管理员、教师和学生,各自有不同的操作权限。