首页 前端知识 详解Django VUE前后端分离项目的搭建(VSCode)

详解Django VUE前后端分离项目的搭建(VSCode)

2024-10-29 23:10:21 前端知识 前端哥 194 600 我要收藏

目录

一、Django+VUE前后端分离的意义

二、环境配置(前提条件)

三、创建项目

3.1创建 Django 项目

3.2创建 VUE 项目

四、前后端分离 启动项目

4.1 VUE配置

4.1.1 App.vue配置

4.1.2 main.js配置

4.1.3  IndexPage.vue

4.1.4 index.js配置

4.2 Django 配置

4.2.1 安装  django-cors-headers

4.2.2 settings.py配置(解决跨域请求问题)

4.3 views.py

4.4 urls.py

4.3 启动前后端

五、说明


一、Django+VUE前后端分离的意义

        前后端分离是一种现代 Web 开发的架构设计模式,其中前端和后端的代码分别独立运行并通过API进行通信。这种架构的主要好处包括:

  • 开发效率提高:前端和后端的开发可以并行进行,前后端团队能够独立开发和测试,减少开发周期。
  • 技术栈的独立性:前后端可以选择不同的技术栈,前端可以使用现代化的框架如 Vue.js,React,Angular等,而后端则可以使用 Django 、Flask 等不同的框架。
  • 可维护性和扩展性:前后端代码解耦,维护和扩展变得更加容易,前端和后端的更新和升级可以独立进行。
  • 用户体验提升:前端页面由 Vue.js 动态渲染,用户体验更流畅,交互性更强。

二、环境配置(前提条件)

        在开始之前,确保你已经安装了以下工具:

  • Python (建议安装Django框架)
  • Node.js 和 npm (用于Vue.js的安装和管理)
  • Django (使用 pip install django 安装)
  • Vue CLI (使用 npm install -g @vue/cli 安装)

        关于 Node.js 和 npm 的安装,以及VUE的环境配置在我的另一篇博客中有详细的介绍,此处不做说明。

三、创建项目

3.1创建 Django 项目

选择一个位置,建立一个新文件夹,打开cmd,进入到此文件夹中,输入以下命令行,创建后端Django项目,然后进入此创建的文件夹中

django-admin startproject backend
cd backend

运行Django服务器,进入此网页,保证项目正常运行

python manage.py runserver

3.2创建 VUE 项目

1.打开一个新终端,在 ad_test 文件夹下,使用VUE CLI创建一个VUE项目:

vue create frontend

cd frontend
npm run build

点击链接,能够成功打开VUE界面,就是成功创建了项目

四、前后端分离 启动项目

打开两个VSCode,分别打开 backend 和 frontend 项目。

4.1 VUE配置

项目结构:与之前的项目结构相比,我在此中新建了

router/index.js:Vue Router 的配置文件,主要负责定义应用中的路由(URL 路径)与对应的组件之间的关系。

views/index/IndexPage.vue:Vue 组件,它展示了与路由关联的页面内容。当用户访问 /IndexPage 路径时,这个组件会被渲染到页面中。

4.1.1 App.vue配置

<router-view></router-view> 是 Vue Router 中的一个核心组件,它的作用是 动态渲染当前路由对应的组件。当用户访问不同的 URL 时,<router-view> 会根据当前的路由配置,渲染与该路由匹配的组件

<template>
  <div id="app">
    <router-view></router-view>            
  </div>
</template>

<script>
  export default {
    name: 'App',
  }
</script>

4.1.2 main.js配置
import { createApp } from 'vue'
import App from './App.vue'
import router from './router/index.js';
const app = createApp(App);
app.use(router);
app.mount('#app');

4.1.3  IndexPage.vue

        安装Axios

npm install axios

        更新Vue组件:

        此项目中,使用axios请求Django后端数据并展示在页面上。

IndexPage.vue

<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>

<script>
import axios from 'axios'

export default {
  data() {
    return {
      message: ''
    }
  },
  mounted() {
    this.fetchData()
  },
  methods: {
    async fetchData() {
      try {
        const response = await axios.get('http://127.0.0.1:8000/api/data/')
        this.message = response.data.message
      } catch (error) {
        console.error('Error fetching data:', error)
      }
    }
  }
}
</script>
4.1.4 index.js配置

安装Vue3兼容的  vue-router 4.x  版本:

import { createRouter, createWebHistory } from 'vue-router';
import IndexPage from '../views/index/IndexPage.vue';
const routes = [
  {
    path: '/IndexPage',
    name: 'IndexPage',
    component: IndexPage,
  },
];

const router = createRouter({
    history: createWebHistory(),
    routes,
  });
  
  export default router;

4.2 Django 配置

文件结构,添加了views.py

4.2.1 安装  django-cors-headers

,这是一个用于处理CORS的Django库。

在Django项目的根目录下运行:

pip install django-cors-headers
4.2.2 settings.py配置(解决跨域请求问题)

在setting.py文件中添加以下配置:

1.将 corsheaders 添加到 INSTALLED_APPS 列表:

INSTALLED_APPS = [
    ...
    'corsheaders',
    'rest_framework',
]

2.将 corsheaders.middleware.CorsMiddleware 添加到 MIDDLEWARE 中,放在 CommonMiddleware 之前:

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]

3. 允许跨域请求:

如果想允许所有域名访问:

CORS_ALLOW_ALL_ORIGINS = True

如果只想允许特定域名访问:

CORS_ALLOWED_ORIGINS = [
    'http://localhost:8080',
]
4.3 views.py
from rest_framework.decorators import api_view
from rest_framework.response import Response

@api_view(['GET'])
def get_data(request):
    data = {'message': 'Hello from Django!'}
    return Response(data)
4.4 urls.py
from django.urls import path
from .views import get_data

urlpatterns = [
    path('api/data/', get_data, name='get_data'),
]

4.3 启动前后端

启动Django后端:

python manage.py runserver

启动VUE前端:

npm run serve

在页面中打开浏览器,注意网址,localhost:8080/IndexPage,展示出从后端传来的参数:“Hello from Django!”,表明前后端连接成功。

五、说明

        网上查阅了好多资料,并没有系统的阐述如何一步一步进行前后端分离项目的前后端连接,本篇blog介绍了如何从零开始搭建 Django 和 Vue 前后端分离的项目并成功实现数据交互,关于具体如何进行内容编辑,需要读者自己探索。

额外说明:

  1. 跨域问题:当前后端分别在不同的端口运行时(如 Vue 在 8080,Django 在 8000),会遇到跨域问题,这需要通过django-cors-headers来处理。

  2. Axios:这是一个用于发送 HTTP 请求的 JavaScript 库,常用于从后端 API 获取数据并更新前端页面。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/19584.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!