Vue.js与Flask/Django后端配合详细讲解

embedded/2024/9/20 3:29:58/ 标签: vue.js

在这里插## 标题入图片描述

> 						大家好,我是程序员小羊!

✨博客主页: https://blog.csdn.net/m0_63815035?type=blog

💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识
📢博客专栏: https://blog.csdn.net/m0_63815035/category_11954877.html
📢欢迎点赞 👍 收藏 ⭐留言 📝
📢本文为学习笔记资料,如有侵权,请联系我删除,疏漏之处还请指正🙉
📢大厦之成,非一木之材也;大海之阔,非一流之归也✨

在这里插入图片描述

前言

Vue.js 与 Flask 或 Django 的结合可以形成一个强大的前后端分离架构,适合构建现代 web 应用。以下是详细讲解如何将 Vue.js 与 Flask/Django 后端配合使用。

1. 基础架构

  • Vue.js: 负责前端,构建用户界面。
  • Flask/Django: 负责后端,处理数据存取和业务逻辑。

2. 项目结构

/my_project/frontend    # Vue.js 项目/backend     # Flask 或 Django 项目

3. 设置 Vue.js

  1. 安装 Vue CLI:

    npm install -g @vue/cli
    
  2. 创建 Vue 项目:

    vue create frontend
    
  3. 开发组件:
    frontend/src/components 下创建 Vue 组件,使用 axios 进行 API 调用。

4. 设置 Flask

  1. 创建 Flask 项目:

    mkdir backend
    cd backend
    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    venv\Scripts\activate     # Windows
    pip install Flask
    
  2. 创建 Flask 应用:
    backend 目录下创建 app.py:

    from flask import Flask, jsonify, requestapp = Flask(__name__)@app.route('/api/data', methods=['GET'])
    def get_data():return jsonify({'message': 'Hello from Flask!'})if __name__ == '__main__':app.run(debug=True)
    
  3. CORS 设置:
    为了允许 Vue.js 与 Flask 通信,需要安装 flask-cors:

    pip install flask-cors
    

    app.py 中添加:

    from flask_cors import CORS
    CORS(app)
    

5. 设置 Django

  1. 创建 Django 项目:

    mkdir backend
    cd backend
    python -m venv venv
    source venv/bin/activate
    pip install django djangorestframework
    django-admin startproject myproject .
    
  2. 创建 API 应用:

    python manage.py startapp api
    
  3. 设置 Django REST Framework:
    settings.py 中添加:

    INSTALLED_APPS = [...'rest_framework','api',
    ]
    
  4. 创建视图:
    api/views.py 中:

    from rest_framework.views import APIView
    from rest_framework.response import Responseclass DataView(APIView):def get(self, request):return Response({'message': 'Hello from Django!'})
    
  5. 设置路由:
    api/urls.py 中:

    from django.urls import path
    from .views import DataViewurlpatterns = [path('data/', DataView.as_view()),
    ]
    

    myproject/urls.py 中包含 api.urls:

    from django.contrib import admin
    from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('api/', include('api.urls')),
    ]
    
  6. CORS 设置:
    安装 django-cors-headers:

    pip install django-cors-headers
    

    settings.py 中添加:

    INSTALLED_APPS = [...'corsheaders',
    ]MIDDLEWARE = [...'corsheaders.middleware.CorsMiddleware',
    ]CORS_ALLOW_ALL_ORIGINS = True  # 或者设置具体的白名单
    

6. 连接前后端

  1. 在 Vue.js 中使用 Axios:
    安装 axios:

    npm install axios
    

    在 Vue 组件中调用 API:

    <template><div>{{ message }}</div>
    </template><script>
    import axios from 'axios';export default {data() {return {message: ''};},mounted() {axios.get('http://localhost:5000/api/data') // Flask.then(response => {this.message = response.data.message;});}
    };
    </script>
    

    对于 Django,URL 更改为 http://localhost:8000/api/data/

  2. 启动开发服务器:

    • Flask:

      python app.py
      
    • Django:

      python manage.py runserver
      
    • Vue:

      cd frontend
      npm run serve
      

7. 生产环境配置

  1. 构建 Vue 应用:

    npm run build
    
  2. 部署 Flask/Django 应用:
    配置 Nginx 或 Apache 作为反向代理,确保它能服务于构建后的 Vue 应用。

  3. 静态文件处理:

    • 对于 Flask,可以将构建后的 Vue 文件放在 Flask 的 static 目录。
    • 对于 Django,确保在 settings.py 中配置 STATICFILES_DIRS

8. 总结

  • 前后端分离使得开发和维护变得更高效。
  • Vue.js 负责用户界面,Flask/Django 处理后端逻辑和数据交互。
  • API 接口的设计和实现是关键,确保正确处理 CORS 和路由。
  • 部署时,选择合适的服务器和代理配置,以确保性能和安全性。

这样就形成了一个完整的前后端分离应用,能够快速开发和扩展。

今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文

在这里插入图片描述


http://www.ppmy.cn/embedded/114017.html

相关文章

36.贪心算法3

1.坏了的计算器&#xff08;medium&#xff09; . - 力扣&#xff08;LeetCode&#xff09; 题目解析 算法原理 代码 class Solution {public int brokenCalc(int startValue, int target) {// 正难则反 贪⼼int ret 0;while (target > startValue) {if (target % 2 0…

EP19 各个页面之间的跳转

文件路径&#xff1a; E:/homework/uniappv3tswallpaper/pages/index/index.vue 添加了几个 navigator 。 <template><view class"homeLayout pageBg"><custom-nav-bar title"推荐"></custom-nav-bar><view class"banne…

windows使用tcpdump.exe工具进行抓包教程

windows主机安装一些抓包工具可能有些不方便&#xff0c;这里有一个tcpdump.exe工具直接免安装&#xff0c;可以直接使用进行抓包。&#xff08;工具下载见 附件&#xff09; tcpdump.exe使用教程 如下&#xff1a; 1&#xff1a;tcpdump -D 可查看网络适配器(注意前面的编号)…

OpenCV结构分析与形状描述符(23)确定一个点是否位于多边形内的函数pointPolygonTest()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 进行点在轮廓内的测试。 该函数确定点是在轮廓内、轮廓外&#xff0c;还是位于一条边上&#xff08;或与顶点重合&#xff09;。它返回正值&…

C++ 条件变量:wait、wait_for、wait_until

前言 在C中&#xff0c;条件变量&#xff08;std::condition_variable&#xff09;是用来在多个线程之间同步执行流的一种机制。它们通常与互斥锁&#xff08;如std::mutex&#xff09;一起使用&#xff0c;以在特定条件满足时唤醒一个或多个线程。条件变量有三种使线程阻塞并…

机器人自主导航从零开始第四步———Rviz、Gazebo、Meshlab的安装

本文参考资料&#xff1a; rviz - ROS 维基 Gazebo : Tutorial : Ubuntu (gazebosim.org) 零. 什么是Rviz和Gazebo&#xff1a; Rviz是一个三维可视化工具&#xff0c;它利用已有的数据将数据可视化&#xff0c;并提供了可以显示图像、模型、表格、路径等信息的插件&#x…

JDeps 使用指南

JDeps 使用指南 jdeps 是一个 Java 类依赖分析工具&#xff0c;允许开发者深入分析 Java 应用程序的依赖情况&#xff0c;包括类、包、模块和 JDK 内部 API 的使用。下面详细介绍 jdeps 的常用命令和输出解释。 1. 基本依赖分析 jdeps path/to/yourapp.jar这个命令会分析指定…

34.贪心算法1

0.贪心算法 1.柠檬水找零&#xff08;easy&#xff09; . - 力扣&#xff08;LeetCode&#xff09; 题目解析 算法原理 代码 class Solution {public boolean lemonadeChange(int[] bills) {int five 0, ten 0;for (int x : bills) {if (x 5) // 5 元&#xff1a;直接收下…

基于vue框架的宠物店管理系统的设计与实现4czn0(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,商品分类,服务类型,商品信息,商品订单,宠物服务,服务预约,服务评价,商品咨询 开题报告内容 基于Vue框架的宠物店管理系统的设计与实现开题报告 一、引言 随着宠物行业的蓬勃发展&#xff0c;宠物店作为宠物产品与服务的重要提供…

【代码】使用c#实现串口通信的基础模板

一、分享代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;using System.IO.Ports; using…

在 Red Hat 上安装 SQL Server 2022 并创建数据库

适用于&#xff1a; SQL Server - Linux 本快速入门介绍如何在 Red Hat Enterprise Linux (RHEL) 8.x 或 9.x 上安装 SQL Server 2022 (16.x)。然后可以使用 sqlcmd 进行连接&#xff0c;创建第一个数据库并运行查询。 注意&#xff1a;本教程需要用户输入和 Internet 连接。 …

高级java每日一道面试题-2024年9月16日-框架篇-Spring MVC和Struts的区别是什么?

如果有遗漏,评论区告诉我进行补充 面试官: 如何处理事务中的性能问题&#xff1f; 我回答: 在Java高级面试中&#xff0c;Spring MVC和Struts是两个常被提及的MVC框架&#xff0c;它们各自具有独特的特点和优势。以下是对这两个框架的详细比较&#xff1a; 架构设计方面 Sp…

UDS 诊断 - RequestFileTransfer(请求文件传输)(0x38)服务

UDS 诊断服务系列文章目录 诊断和通信管理功能单元 UDS 诊断 - DiagnosticSessionControl&#xff08;诊断会话控制&#xff09;&#xff08;0x10&#xff09;服务 UDS 诊断 - ECUReset&#xff08;ECU重置&#xff09;&#xff08;0x11&#xff09;服务 UDS 诊断 - SecurityA…

Linux命令---查看端口是否被占用

简介 在linux系统使用命令查找指定端口是否被占用。 命令 lsof -i:6379

【机器学习】参数学习的基本概念以及贝叶斯网络的参数学习和马尔可夫随机场的参数学习

引言 概率图模型参数学习是模型训练的关键环节&#xff0c;涉及贝叶斯网络和马尔可夫随机场的参数估计和结构确定 文章目录 引言一、参数学习任务1.1 定义1.2 常见参数学习任务类型1.2.1 监督学习中的参数学习1.2.2 无监督学习中的参数学习1.2.3 半监督学习中的参数学习1.2.4 强…

Apache subversion 编译流程

目录 1. 概述2. 依赖库简介2.1 Expat2.2 Apache apr2.3 Apache apr-iconv2.4 Apache apr-util2.5 Zlib2.6 OpenSSL2.7 Sqlite2.8 Apache Serf2.9 Apache subversion3. 编译3.1 Expat编译3.1.1 源码信息3.1.2 CMake-GUI3.1.3 编译步骤3.2 APR编译3.2.1 源码信息3.2.2 编译步骤3.…

解决使用nvm ls命令没有出现*的问题

一、引言 在输命令的时候不知道手误写了什么导致node命令用不了&#xff0c;查看环境变量配的nvm对应的路径没问题&#xff0c;试过网上说的修改文件夹名字但是没有用&#xff01;&#xff01; 输入 nvm ls 显示已下载的node版本&#xff0c;发现前面没有* 输入nvm use 使用其中…

基于Java+Mysql实现(web)大型企业管理系统

技术报告 第一章 系统概述 包括用户管理、权限管理、软件项目管理、软件模块管理、测试用例管理、测试任务分配、bug管理等功能。实现公司不同部门间团队协作&#xff0c;管理人员也能够更加有效的把控系统开发的进度。 本实验综合应用JavaWeb编程中的Servlet&#xff0c;JS…

golang 字符串浅析

go的字符串是只读的 测试源代码 package mainimport ("fmt""unsafe" )func swap(x, y string) (string, string) {return y, x }func print_string(obj *string, msg string) {string_ptr : (*[2]uintptr)(unsafe.Pointer(obj))first_obj_addr : string_…

大模型教程:使用 Milvus、vLLM 和 Llama 3.1 搭建 RAG 应用

vLLM 是一个简单易用的 LLM 推理服务库。加州大学伯克利分校于 2024 年 7 月将 vLLM 作为孵化项目正式捐赠给 LF AI & Data Foundation 基金会。欢迎 vLLM 加入 LF AI & Data 大家庭&#xff01;&#x1f389; 在主流的 AI 应用架构中&#xff0c;大语言模型&#xff…