当前位置: 首页 > article >正文

Django+Vue3全栈开发实战:从零搭建博客系统

在这里插入图片描述

文章目录

    • 1. 开发环境准备
    • 2. 创建Django项目与配置
    • 3. 设计数据模型与API
    • 4. 使用DRF创建RESTful API
    • 5. 创建Vue3项目与配置
    • 6. 前端页面开发与组件设计
    • 7. 前后端交互与Axios集成
    • 8. 项目优化与调试
    • 9. 部署上线
    • 10. 总结与扩展
      • 10.1 项目总结
        • 10.1.1 技术栈回顾
        • 10.1.2 项目亮点
      • 10.2 扩展方向
        • 10.2.1 功能扩展
        • 10.2.2 技术扩展
      • 10.3 最佳实践
        • 10.3.1 后端最佳实践
        • 10.3.2 前端最佳实践
      • 10.4 常见问题与解决方案
        • 10.4.1 后端常见问题
        • 10.4.2 前端常见问题
      • 10.5 参考资料与扩展阅读

1. 开发环境准备

# 检查Python版本
python --version  # 要求3.8+# 安装虚拟环境工具
pip install virtualenv# 检查Node.js版本
node -v  # 要求16+

2. 创建Django项目与配置

# 创建项目目录
mkdir blog_project && cd blog_project# 创建虚拟环境
virtualenv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate    # Windows# 安装Django
pip install django# 创建项目
django-admin startproject backend
cd backend# 创建应用
python manage.py startapp blog

配置settings.py:

INSTALLED_APPS = [...'rest_framework','corsheaders','blog.apps.BlogConfig'
]MIDDLEWARE = [...'corsheaders.middleware.CorsMiddleware',
]CORS_ALLOW_ALL_ORIGINS = True

3. 设计数据模型与API

models.py:

from django.db import models
from django.contrib.auth.models import Userclass Post(models.Model):title = models.CharField(max_length=200)content = models.TextField()author = models.ForeignKey(User, on_delete=models.CASCADE)created_at = models.DateTimeField(auto_now_add=True)updated_at = models.DateTimeField(auto_now=True)def __str__(self):return self.title

执行迁移:

python manage.py makemigrations
python manage.py migrate

4. 使用DRF创建RESTful API

serializers.py:

from rest_framework import serializers
from .models import Postclass PostSerializer(serializers.ModelSerializer):author = serializers.ReadOnlyField(source='author.username')class Meta:model = Postfields = '__all__'

views.py:

from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializerclass PostViewSet(viewsets.ModelViewSet):queryset = Post.objects.all()serializer_class = PostSerializerdef perform_create(self, serializer):serializer.save(author=self.request.user)

urls.py:

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from blog import viewsrouter = DefaultRouter()
router.register(r'posts', views.PostViewSet)urlpatterns = [path('api/', include(router.urls)),
]

5. 创建Vue3项目与配置

npm init vue@latest frontend
cd frontend
npm install
npm run dev

安装必要依赖:

npm install axios vue-router@4 pinia

配置main.js:

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'const app = createApp(App)
app.use(createPinia())
app.use(router)
app.mount('#app')

6. 前端页面开发与组件设计

PostList.vue组件示例:

<template><div class="post-list"><div v-for="post in posts" :key="post.id" class="post-card"><h3>{{ post.title }}</h3><p>{{ post.content.substring(0, 100) }}...</p><div class="meta"><span>作者:{{ post.author }}</span><span>发布时间:{{ formatDate(post.created_at) }}</span></div></div></div>
</template><script setup>
import { ref, onMounted } from 'vue'
import axios from 'axios'const posts = ref([])const fetchPosts = async () => {try {const response = await axios.get('http://localhost:8000/api/posts/')posts.value = response.data} catch (error) {console.error('获取文章失败:', error)}
}const formatDate = (dateString) => {return new Date(dateString).toLocaleDateString()
}onMounted(() => {fetchPosts()
})
</script><style scoped>
.post-list {max-width: 800px;margin: 0 auto;
}
.post-card {background: #fff;border-radius: 8px;padding: 20px;margin-bottom: 20px;box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
</style>

7. 前后端交互与Axios集成

创建axios实例:

// src/utils/http.js
import axios from 'axios'const instance = axios.create({baseURL: 'http://localhost:8000/api',timeout: 5000,headers: {'Content-Type': 'application/json'}
})export default instance

使用Pinia状态管理:

// stores/postStore.js
import { defineStore } from 'pinia'
import http from '@/utils/http'export const usePostStore = defineStore('post', {actions: {async createPost(postData) {try {const response = await http.post('/posts/', postData)return response.data} catch (error) {throw error.response.data}}}
})

8. 项目优化与调试

配置Django静态文件:

# settings.py
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'

Vue生产构建:

npm run build

配置WhiteNoise中间件:

MIDDLEWARE = ['whitenoise.middleware.WhiteNoiseMiddleware',...
]STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

9. 部署上线

使用Gunicorn部署Django:

pip install gunicorn
gunicorn backend.wsgi:application --bind 0.0.0.0:8000

配置Nginx:

server {listen 80;server_name example.com;location /api {proxy_pass http://localhost:8000;proxy_set_header Host $host;}location / {root /path/to/vue/dist;try_files $uri $uri/ /index.html;}
}

10. 总结与扩展

10.1 项目总结

在本项目中,我们通过Django和Vue3实现了一个全栈博客系统,涵盖了从前端到后端的完整开发流程。以下是项目的主要技术点总结:

10.1.1 技术栈回顾
  1. 后端技术栈

    • Django:作为核心框架,提供了强大的ORM、路由管理、模板引擎等功能。
    • Django REST Framework (DRF):用于快速构建RESTful API,支持序列化、视图集、权限控制等功能。
    • 数据库:使用SQLite作为开发数据库,支持无缝迁移到MySQL或PostgreSQL。
    • 身份验证:通过Django内置的User模型和DRF的TokenAuthentication实现用户认证。
    • CORS:通过django-cors-headers解决跨域问题,确保前后端分离架构的正常运行。
  2. 前端技术栈

    • Vue3:作为前端框架,提供了组合式API、响应式数据绑定、组件化开发等特性。
    • Pinia:用于状态管理,替代Vuex,提供更简洁的API和TypeScript支持。
    • Axios:用于发送HTTP请求,与后端API进行数据交互。
    • Vue Router:实现前端路由管理,支持动态路由、嵌套路由等功能。
    • Element Plus:作为UI组件库,提供丰富的组件和样式,加速页面开发。
  3. 开发工具

    • VS Code:作为主要开发工具,配合插件(如Vetur、ESLint、Prettier)提升开发效率。
    • Postman:用于API调试和测试。
    • Git:用于版本控制,支持团队协作开发。
  4. 部署方案

    • Nginx:作为反向代理服务器,处理静态文件请求和负载均衡。
    • Gunicorn:作为WSGI服务器,用于部署Django应用。
    • Docker:通过容器化技术简化部署流程,支持跨平台运行。
10.1.2 项目亮点
  1. 前后端分离架构

    • 前端和后端完全解耦,通过API进行数据交互,提高了开发效率和可维护性。
    • 前端可以独立部署,支持多平台(如Web、移动端)共享同一套API。
  2. 模块化设计

    • 后端通过Django的App机制将功能模块化,便于扩展和维护。
    • 前端通过Vue3的组件化开发,实现了高内聚、低耦合的代码结构。
  3. 响应式设计

    • 前端页面采用响应式布局,适配不同设备(PC、平板、手机)。
    • 使用Element Plus的栅格系统和组件,快速构建美观的UI。
  4. 性能优化

    • 后端通过DRF的分页、缓存、查询优化等技术提升API性能。
    • 前端通过懒加载、代码分割、图片压缩等技术减少页面加载时间。
  5. 安全性

    • 后端通过Django的CSRF保护、XSS防护、SQL注入防护等机制确保数据安全。
    • 前端通过Axios的请求拦截器和响应拦截器处理错误和权限验证。

10.2 扩展方向

10.2.1 功能扩展
  1. 用户认证与权限管理

    • 实现基于JWT(JSON Web Token)的身份验证,支持无状态认证。
    • 添加角色管理功能(如管理员、普通用户),实现细粒度的权限控制。
  2. 文件上传与存储

    • 支持用户上传头像、文章封面等文件。
    • 使用云存储服务(如AWS S3、阿里云OSS)存储静态文件。
  3. 评论与点赞功能

    • 实现文章评论功能,支持嵌套评论和分页加载。
    • 添加点赞功能,记录用户的点赞行为。
  4. 搜索与过滤

    • 实现全文搜索功能,使用Elasticsearch或Django的django-filter库。
    • 支持按标签、分类、时间等条件过滤文章。
  5. 实时通知

    • 使用WebSocket实现实时通知功能(如新评论、点赞提醒)。
    • 集成第三方通知服务(如Firebase Cloud Messaging)。
  6. 国际化与多语言支持

    • 使用Django的django-i18n实现后端多语言支持。
    • 使用Vue3的vue-i18n实现前端多语言切换。
10.2.2 技术扩展
  1. TypeScript支持

    • 将Vue3项目迁移到TypeScript,提升代码的可维护性和类型安全性。
    • 配置ESLint和Prettier,统一代码风格。
  2. GraphQL集成

    • 使用GraphQL替代RESTful API,提供更灵活的数据查询能力。
    • 集成Apollo Client作为前端GraphQL客户端。
  3. 微服务架构

    • 将单体应用拆分为多个微服务(如用户服务、文章服务、评论服务)。
    • 使用Docker和Kubernetes实现容器化部署和动态扩缩容。
  4. Serverless架构

    • 将部分功能(如图片处理、邮件发送)迁移到Serverless平台(如AWS Lambda)。
    • 使用Vercel或Netlify部署前端应用。
  5. 自动化测试

    • 使用Pytest和Django的测试工具编写后端单元测试和集成测试。
    • 使用Jest和Vue Test Utils编写前端单元测试和组件测试。
  6. CI/CD集成

    • 使用GitHub Actions或GitLab CI实现持续集成和持续部署。
    • 配置自动化测试、代码检查和部署流程。

10.3 最佳实践

10.3.1 后端最佳实践
  1. 代码结构优化

    • 使用Django的App机制将功能模块化,避免单个App过于臃肿。
    • 将业务逻辑放在Service层,减少视图函数的复杂度。
  2. API设计规范

    • 遵循RESTful API设计原则,使用合适的HTTP方法和状态码。
    • 使用版本控制(如/api/v1/posts)确保API的兼容性。
  3. 数据库优化

    • 使用索引加速查询,避免全表扫描。
    • 使用select_relatedprefetch_related优化关联查询。
  4. 缓存机制

    • 使用Redis缓存频繁访问的数据(如文章列表、用户信息)。
    • 使用Django的缓存框架实现页面级缓存和片段缓存。
  5. 日志记录

    • 使用Python的logging模块记录关键操作和错误信息。
    • 配置日志轮转和分级存储,便于问题排查。
10.3.2 前端最佳实践
  1. 组件化开发

    • 将页面拆分为多个可复用的组件,提高代码的可维护性。
    • 使用插槽(Slot)和Props实现组件的灵活配置。
  2. 状态管理

    • 使用Pinia集中管理全局状态,避免组件间直接传递数据。
    • 将异步操作(如API请求)放在Store中,减少组件的复杂度。
  3. 性能优化

    • 使用懒加载和代码分割减少首屏加载时间。
    • 使用v-ifv-show优化DOM渲染性能。
  4. 错误处理

    • 使用Axios的拦截器统一处理请求错误和响应错误。
    • 在组件中显示友好的错误提示,提升用户体验。
  5. SEO优化

    • 使用Vue Router的meta标签设置页面标题和描述。
    • 使用SSR(服务器端渲染)或预渲染技术提升SEO效果。

10.4 常见问题与解决方案

10.4.1 后端常见问题
  1. 跨域问题

    • 解决方案:使用django-cors-headers中间件,配置CORS_ALLOW_ALL_ORIGINS或白名单。
  2. 数据库迁移失败

    • 解决方案:检查模型定义是否正确,删除迁移文件并重新生成。
  3. 性能瓶颈

    • 解决方案:使用Django Debug Toolbar分析性能问题,优化查询和缓存。
  4. 安全性问题

    • 解决方案:启用Django的安全中间件,定期更新依赖库。
10.4.2 前端常见问题
  1. 页面加载慢

    • 解决方案:使用懒加载、代码分割、CDN加速等技术优化加载速度。
  2. 组件通信复杂

    • 解决方案:使用Pinia集中管理状态,减少组件间的直接通信。
  3. API请求失败

    • 解决方案:检查网络连接、API地址和请求参数,使用拦截器统一处理错误。
  4. 浏览器兼容性问题

    • 解决方案:使用Babel和PostCSS处理兼容性问题,测试主流浏览器。

10.5 参考资料与扩展阅读

  1. 官方文档

    • Django官方文档
    • Vue3官方文档
    • DRF官方文档
  2. 推荐书籍

    • 《Django for Beginners》
    • 《Vue.js设计与实现》
    • 《RESTful API设计指南》
  3. 在线课程

    • Django全栈开发实战
    • Vue3高级开发技巧
  4. 开源项目

    • Django博客系统
    • Vue3管理后台

相关文章:

Django+Vue3全栈开发实战:从零搭建博客系统

文章目录 1. 开发环境准备2. 创建Django项目与配置3. 设计数据模型与API4. 使用DRF创建RESTful API5. 创建Vue3项目与配置6. 前端页面开发与组件设计7. 前后端交互与Axios集成8. 项目优化与调试9. 部署上线10. 总结与扩展10.1 项目总结10.1.1 技术栈回顾10.1.2 项目亮点 10.2 扩…...

深度学习之图像回归(一)

前言 图像回归任务主要是理解一个最简单的深度学习相关项目的结构&#xff0c;整体的思路&#xff0c;数据集的处理&#xff0c;模型的训练过程和优化处理。 因为深度学习的项目思路是差不多的&#xff0c;主要的区别是对于数据集的处理阶段&#xff0c;之后模型训练有一些小…...

使用vue-office报错TypeError: ft.createElementVNode is not a function

支持多种文件(.docx、.xlsx、.xls、.pdf、.pptx)预览的vue组件库&#xff0c;支持vue2/3。也支持非Vue框架的预览。 不支持.doc、.ppt&#xff08;2003年及以前的版本&#xff09; 官网&#xff1a;https://www.npmjs.com/package/vue-office/excel?activeTabreadme 官方有实…...

《深度揭秘:DeepSeek如何解锁自然语言处理密码》

在人工智能蓬勃发展的当下&#xff0c;自然语言处理&#xff08;NLP&#xff09;成为了连接人类与机器的关键桥梁。作为该领域的佼佼者&#xff0c;DeepSeek以其卓越的语义理解和生成能力&#xff0c;备受瞩目。今天&#xff0c;就让我们深入探寻DeepSeek在自然语言处理中实现语…...

解决 Mac 只显示文件大小,不显示目录大小

前言 在使用 mac 的时候总是只显示文件的大小&#xff0c;不显示文件夹的大小&#xff0c;为了解决问题可以开启“计算文件夹”。 步骤 1.进入访达 2.工具栏点击“显示”选项&#xff0c;点击 “查看显示选项” 3.勾选 显示“资源库"文件夹 和 计算所有大小 或者点击…...

从零开始学习PX4源码9(部署px4源码到gitee)

目录 文章目录 目录摘要1.gitee上创建仓库1.1 gitee上创建仓库PX4代码仓库1.2 gitee上创建子仓库2.固件在gitee部署过程2.1下载固件到本地2.2切换本地分支2.3修改.gitmodules内容2.4同步子模块仓库地址2.5同步子模块仓库地址更新(下载)子模块3.一级子模块和二级子模块的映射关…...

遗传算法与深度学习实战系列,自动调优深度神经网络和机器学习的超参数

遗传算法与深度学习实战系列文章 目录 进化深度学习生命模拟及其应用生命模拟与进化论遗传算法中常用遗传算子遗传算法框架DEAPDEAP框架初体验使用遗传算法解决N皇后问题使用遗传算法解决旅行商问题使用遗传算法重建图像遗传编程详解与实现粒子群优化详解与实现协同进化详解与…...

【Python爬虫(28)】爬虫时代,数据安全的坚盾与隐私保护的密锁

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…...

分布式光纤声波振动技术在钻井泄漏检测中的应用

在石油天然气的钻井作业中&#xff0c;及时发现并定位泄漏点对于保障开采安全、降低环境污染以及避免经济损失至关重要。传统的泄漏检测方法往往存在局限性&#xff0c;而分布式光纤声波振动技术凭借其独特的优势&#xff0c;正逐渐成为钻井过程中寻找泄漏的有力工具。 技术原理…...

2025年AI数字人大模型+智能家居HA引领未来(开源项目名称:AI Sphere Butler)

介绍 开源项目计划&#xff1a;AI Sphere Butler 打造全方位服务用户生活的AI全能管家——代号**“小粒”**&#xff08;管家名称可以随意自定义&#xff09; GitHub地址&#xff1a;https://github.com/latiaoge/AI-Sphere-Butler 项目名称&#xff1a;AI Sphere Butler&…...

UGUI RectTransform的SizeDelta属性

根据已知内容&#xff0c;SizeDelta offsetMax - offsetMin 1.锚点聚拢情况下 输出 那么此时SizeDelta就是UI元素的长宽大小 2. 锚点分散时 引用自此篇文章中的描述 揭秘&#xff01;anchoredPosition的几何意义&#xff01; SizeDelta offsetMax - offsetMin (rectMax…...

三甲医院网络架构与安全建设实战

一、设计目标 实现医疗业务网/卫生专网/互联网三网隔离 满足等保2.0三级合规要求 保障PACS影像系统低时延传输 实现医疗物联网统一接入管控 二、全网拓扑架构 三、网络分区与安全设计 IP/VLAN规划表 核心业务配置&#xff08;华为CE6865&#xff09; interface 100G…...

Ubuntu 防火墙ufw详解

ufw&#xff08;Uncomplicated Firewall&#xff09;是 Ubuntu 中一个简单易用的防火墙管理工具&#xff0c;基于 iptables&#xff0c;旨在简化防火墙配置。以下是 ufw 的详细说明和使用方法&#xff1a; 1. 安装 ufw 在大多数 Ubuntu 系统中&#xff0c;ufw 已经预装。如果没…...

机器学习笔记——常用损失函数

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本笔记介绍机器学习中常见的损失函数和代价函数&#xff0c;各函数的使用场景。 热门专栏 机器学习 机器学习笔记合集 深度学习 深度学习笔记合集 文章目录 热门…...

计算机网络:应用层 —— 动态主机配置协议 DHCP

文章目录 什么是 DHCP&#xff1f;DHCP 的产生背景DHCP 的工作过程工作流程地址分配机制 DHCP 中继代理总结 什么是 DHCP&#xff1f; 动态主机配置协议&#xff08;DHCP&#xff0c;Dynamic Host Configuration Protocol&#xff09;是一种网络管理协议&#xff0c;用于自动分…...

23种设计模式 - 解释器模式

模式定义 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;用于为特定语言&#xff08;如数控系统的G代码&#xff09;定义文法规则&#xff0c;并构建解释器来解析和执行该语言的语句。它通过将语法规则分解为多个类&#xff0c;实现…...

C++中string常用方法操作指南(后续补充)

文章目录 1. 定义和初始化字符串2. 字符串的基本操作2.1 获取字符串长度2.2 检查字符串是否为空2.3 访问字符串中的字符 3. 输入字符串4. 常用的字符串操作4.1 截取子字符串4.2 查找子字符串4.3 替换字符串4.4 插入字符串4.5 删除字符串 5. 字符串的排序6. 字符串与数值的转换6…...

遥感与GIS在滑坡、泥石流风险普查中的实践技术应用

原文>>> 遥感与GIS在滑坡、泥石流风险普查中的实践技术应用 我国是地质灾害多发国家&#xff0c;地质灾害的发生无论是对于地质环境还是人类生命财产的安全都会带来较大的威胁&#xff0c;因此需要开展地质灾害风险普查。利用遥感&#xff08;RS&#xff09;技术进行地…...

14天速成PAT-BASIC基础知识!

两周关于PAT的基础学习计划。 Day 1: 基本语法和输入输出 知识点 数据类型&#xff08;int, long, float, double, char&#xff09;变量声明和初始化输入输出函数&#xff08;scanf, printf&#xff09;控制结构&#xff08;if-else, switch, for, while, do-while&#xff0…...

Unity性能优化个人经验总结(不定期更新)

字符串 在使用常量或静态变量 Update、LateUpdate、FixedUpdate等每帧调用或调用频率很高的函数内使用字符串时&#xff0c;均使用常量或静态变量处理。 原因解释&#xff1a;除了常量或静态变量的字符串将会在每一次调用时&#xff0c;将会new一个新的字符串&#xff0c;导…...

vue3面试题进阶版

覆盖 Vue3 的核心知识点、高频考点及实战场景 一、基础与核心概念 MVVM 与 MVC 的区别 MVC&#xff1a;Model&#xff08;数据&#xff09;、View&#xff08;视图&#xff09;、Controller&#xff08;控制器&#xff09;&#xff0c;视图更新需手动操作 DOM。MVVM&#xff1…...

python小项目编程-初级(5、词频统计,6、简单得闹钟)

1、词频统计 统计文本文件中每个单词出现的频率。 实现 import tkinter as tk from tkinter import filedialog, messagebox from collections import Counter import reclass WordFrequencyCounter:def __init__(self, master):self.master masterself.master.title("…...

掌握 ElasticSearch 四种match查询的原理与应用

文章目录 一、引言 (Introduction)二、准备工作&#xff1a;创建索引和添加示例数据三、match 查询四、match_all 查询五、multi_match 查询六、match_phrase 查询七、总结 (Conclusion) 一、引言 (Introduction) 在信息爆炸的时代&#xff0c;快速准确地找到所需信息至关重要…...

Vue 中组件通信的方式有哪些,如何实现父子组件和非父子组件之间的通信?

一、父子组件通信&#xff08;垂直通信&#xff09; 1. Props 传值&#xff08;父 → 子&#xff09; 实现方案&#xff1a; <!-- Parent.vue --> <template><Child :user"userData" /> </template><script setup> import { ref } …...

微信小程序(uni)+蓝牙连接+Xprint打印机实现打印功能

1.蓝牙列表实现&#xff0c;蓝牙设备展示&#xff0c;蓝牙连接 <template><view class"container"><view class"container_top"><view class"l">设备名称</view><view class"r">{{state.phoneNam…...

QT 建立一片区域某种颜色

绘制一个位于(50, 50)的200x200的红色矩形 #include "widget.h" #include "ui_widget.h" #include <QPainter>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);update(); }Widget::~Widget() {delete…...

Go Web 项目实战:构建 RESTful API、命令行工具及应用部署

Go Web 项目实战&#xff1a;构建 RESTful API、命令行工具及应用部署 Go 语言因其简洁高效、并发支持强大等特点&#xff0c;已经成为了后端开发的热门选择之一。本篇文章将通过实战案例带领你学习如何使用 Go 构建一个简单的 RESTful API&#xff0c;开发命令行工具&#xf…...

Eclipse自动排版快捷键“按了没有用”的解决办法

快捷键按了没有用&#xff0c;通常是因为该快捷键方式被其他软件占用了&#xff0c;即别的软件也设置了这个快捷键&#xff0c;导致你按了之后电脑不知道该响应哪个软件。 解决办法&#xff1a;1.将当前软件的这个快捷键改了&#xff1b;2.找到占用的那个软件&#xff0c;把那…...

springboot404-基于Java的校园礼服租赁系统(源码+数据库+纯前后端分离+部署讲解等)

&#x1f495;&#x1f495;作者&#xff1a; 爱笑学姐 &#x1f495;&#x1f495;个人简介&#xff1a;十年Java&#xff0c;Python美女程序员一枚&#xff0c;精通计算机专业前后端各类框架。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xf…...

PHP支付宝--转账到支付宝账户

官方参考文档&#xff1a; ​https://opendocs.alipay.com/open/62987723_alipay.fund.trans.uni.transfer?sceneca56bca529e64125a2786703c6192d41&pathHash66064890​ 可以使用默认应用&#xff0c;也可以自建新应用&#xff0c;此处以默认应用来讲解【默认应用默认支持…...