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

本文涉及的产品
RDS Agent Manager,2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS Agent(兼容Hermes Agent),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只做服务层。不过本方案也有明显的缺点,就是不太适合个人全栈开发。说到这里,大家如果有好的建议希望可以告诉我,十分感谢!

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
634 6
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
565 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
搜索推荐 前端开发 数据可视化
基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现
本文介绍了一个基于Python协同过滤算法的旅游景点推荐系统,该系统采用Django框架、MySQL数据库、Bootstrap前端和echarts数据可视化技术,旨在为用户提供个性化的旅游推荐服务,提升用户体验和旅游市场增长。
2275 9
基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现
|
搜索推荐 前端开发 算法
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
1305 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
|
存储 关系型数据库 MySQL
基于python django 医院管理系统,多用户功能,包括管理员、用户、医生,数据库MySQL
本文介绍了一个基于Python Django框架开发的医院管理系统,该系统设计了管理员、用户和医生三个角色,具备多用户功能,并使用MySQL数据库进行数据存储和管理。
752 4
基于python django 医院管理系统,多用户功能,包括管理员、用户、医生,数据库MySQL
|
JavaScript 前端开发 API
vue获取图片的blob传给django后端
vue获取图片的blob传给django后端
380 4
|
JavaScript 前端开发 Python
django接收前端vue传输的formData图片数据
django接收前端vue传输的formData图片数据
398 4
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
997 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
存储 JavaScript 前端开发
Django + Vue 实现图片上传功能的全流程配置与详细操作指南
 在现代Web应用中,图片上传是一个常见且重要的功能。Django作为强大的Python Web框架,结合Vue.js这样的现代前端框架,能够高效地实现这一功能。本文将详细介绍如何在Django项目中配置图片上传的后端处理,并在Vue前端实现图片的选择、预览和上传功能。
|
9月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
776 2

推荐镜像

更多