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

news/2024/9/20 0:12:54 标签: 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, request
    
    app = 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 Response
    
    class DataView(APIView):
        def get(self, request):
            return Response({'message': 'Hello from Django!'})
    
  5. 设置路由:
    api/urls.py 中:

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

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

    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        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.niftyadmin.cn/n/5666359.html

相关文章

openEuler 22.03 LTS 安装JDK 8(亲测很简单的安装办法)

Oracle JDK从2019年4月16日起开始商业用途统统收费&#xff0c;也就是说只能使用2019年1月15发布的JDK 8u202免费版本&#xff0c;没有订阅&#xff08;交钱&#xff09;是没安全更新可用的&#xff0c;所以只能使用替代品OpenJDK、AdoptOpenJDK等发布版&#xff0c;那为什么不…

蓝桥杯4. Fizz Buzz 经典问题

题目描述 给定一个整数 NN&#xff0c;从 1 到 NN 按照下面的规则返回每个数&#xff1a; 如果这个数被 3 整除&#xff0c;返回 Fizz。如果这个数被 5 整除&#xff0c;返回 Buzz如果这个数能同时被 3 和 5 整除&#xff0c;返回 FizzBuzz。如果这个数既不能被 3 也不能被 5…

我向大模型求了一份Stable Diffusion的应用场景

写在前面&#xff1a; 茫茫人海中&#xff0c;有你有我&#xff0c;相遇相识相互琢磨&#xff0c;人潮人海中是你是我&#xff0c;装作正派面带笑容&#xff0c;不必过分多说 自己清楚&#xff0c;你我到底想要做些什么&#xff0c;不必在乎许多 更不必难过&#xff0c;终究有一…

Python编码系列—Python桥接模式:连接抽象与实现的桥梁

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

消息队列-Kafka(概念篇)

1 为什么需要消息队列&#xff1f; 消息队列是一种基于消息的异步通信机制&#xff0c;用于在分布式系统中不同组件或服务之间传递数据和通知。实际上可以将消息队列看作为存放消息的容器&#xff0c;参与消息传递的分别称为生产者&#xff08;发送消息&#xff09;和消费者&am…

Linux环境变量进程地址空间

目录 一、初步认识环境变量 1.1常见的环境变量 1.2环境变量的基本概念 二、命令行参数 2.1通过命令行参数获取环境变量 2.2本地变量和内建命令 2.3环境变量的获取 三、进程地址空间 3.1进程&#xff08;虚拟&#xff09;地址空间的引入 3.2进程地址空间的布局和理解 …

Java键盘输入语句

编程输入语句 1.介绍:在编程中&#xff0c;需要接受用户输入的数据&#xff0c;就可以使用键盘输入语句来获取。 2.步骤&#xff1a; 1&#xff09;导入该类的所在包&#xff0c;java.util.* 2)创建该类对象&#xff08;声明变量&#xff09; 3&#xff09;调用里面的功能 3…

一种没有注释的语言

原文&#xff1a;Breck Yunits - 2024.09.05 JSON 是 PLDB&#xff08;A Programming Language Database&#xff09;中唯一不支持注释的流行语言。JSON 既不支持单行注释&#xff0c;也不支持多行注释。 JSON 最初是有注释的 Douglas Crockford 在 2012 年解释了他独特的设计…