首页 > 其他分享 >Django+Vue构建前后端分离开发模式

Django+Vue构建前后端分离开发模式

时间:2024-05-25 21:44:17浏览次数:22  
标签:Vue py Django blog API 构建 import

将Django作为后端,Vue作为前端进行前后端分离开发是一个常见的模式。
下面是一个完整的步骤,以构建一个Django和Vue整合的项目。

1. 准备Django后端

安装必要的库

确保你已经安装了Django和Django REST framework:

pip install django djangorestframework

配置Django项目

myproject/settings.py 中,添加 rest_frameworkINSTALLED_APPS

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

创建一个API端点

blog 应用中创建一个API端点。首先,在 blog 应用目录下创建一个 serializers.py 文件,并定义序列化器:

from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = ['id', 'title', 'content', 'created_at']

然后,在 views.py 中创建一个视图来处理API请求:

from rest_framework import generics
from .models import Post
from .serializers import PostSerializer

class PostListCreate(generics.ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

接下来,在 urls.py 中定义API的路由:

from django.urls import path
from .views import PostListCreate

urlpatterns = [
    path('api/posts/', PostListCreate.as_view(), name='post-list-create'),
]

在主项目的 urls.py 文件中包含 blog 应用的URL:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
]

2. 准备Vue前端

安装Vue CLI

首先,安装Vue CLI(如果尚未安装):

npm install -g @vue/cli

创建Vue项目

使用Vue CLI创建一个新的Vue项目:

vue create frontend
cd frontend

安装Axios

在Vue项目中安装Axios,用于与后端API通信:

npm install axios

配置Axios

src 目录下创建一个 api 目录,并在其中创建一个 index.js 文件来配置Axios:

// src/api/index.js
import axios from 'axios';

const apiClient = axios.create({
  baseURL: 'http://127.0.0.1:8000/blog/api',
  withCredentials: false,
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  }
});

export default {
  getPosts() {
    return apiClient.get('/posts/');
  }
}

创建Vue组件

src 目录下创建一个 components 目录,并在其中创建一个 PostList.vue 文件:

<template>
  <div>
    <h1>Blog Posts</h1>
    <ul>
      <li v-for="post in posts" :key="post.id">
        {{ post.title }} - {{ post.created_at }}
      </li>
    </ul>
  </div>
</template>

<script>
import api from '../api'

export default {
  data() {
    return {
      posts: []
    }
  },
  created() {
    api.getPosts().then(response => {
      this.posts = response.data;
    });
  }
}
</script>

<style>
/* Add some basic styling */
</style>

配置路由

src/router/index.js 中添加路由配置:

import Vue from 'vue'
import Router from 'vue-router'
import PostList from '@/components/PostList'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'PostList',
      component: PostList
    }
  ]
})

3. 启动项目

启动Django后端

确保你的Django开发服务器在运行:

python manage.py runserver

启动Vue前端

frontend 目录下启动Vue开发服务器:

npm run serve

4. 访问项目

打开浏览器,访问 http://localhost:8080,你应该会看到从Django后端API获取并显示的博客文章列表。

重点和难点

  1. CORS问题:前后端分离的项目中,通常会遇到跨域资源共享(CORS)问题。你需要在Django项目中配置CORS,安装 django-cors-headers 并进行配置。

    pip install django-cors-headers
    

    settings.py 中添加:

    INSTALLED_APPS = [
        ...
        'corsheaders',
    ]
    
    MIDDLEWARE = [
        ...
        'corsheaders.middleware.CorsMiddleware',
    ]
    
    CORS_ORIGIN_ALLOW_ALL = True  # 或者配置具体允许的域名
    
  2. API端点和前端接口的设计:确保API设计合理,前端接口简单易用。序列化器和视图的设计需要考虑前端需求。

  3. 环境配置:在开发和生产环境中,可能需要不同的配置。例如,前端在生产环境中通常会构建为静态文件,放置在Django的静态文件目录中。

通过以上步骤,你可以成功构建一个前后端分离的Django和Vue项目,前端通过API与后端通信,实现完整的功能。

标签:Vue,py,Django,blog,API,构建,import
From: https://www.cnblogs.com/aiparallelworld/p/18213034

相关文章

  • Python小白必备!清华大牛整理的《Django零基础入门到精通》手册
    Django是Python社区的两大最受欢迎的Web框架之一(另一个是Flask)。凭借功能强大的脚手架和诸多开箱即用的组件,可以使你能够以最小的代价构建和维护高质量的Web应用。从好的方面来看,Web开发激动人心且富于创造性;从另一面来看,它却是份繁琐而令人生厌的工作。通过减少重复......
  • Django中型项目的目录结构和一个应用创建启动示例
    一个中等Django项目的目录结构包含多个应用、配置文件、静态文件和模板文件等。myproject/├──manage.py#Django项目管理脚本,用于运行服务器、迁移数据库等管理命令├──myproject/#项目配置目录,包含全局配置文件和静态、模板文件│├──__init__.......
  • Vue3实战笔记(43)—Vue3组合式API下封装可复用ECharts图表组件
    文章目录前言一、封装echart图标钩子二、使用步骤总结前言接上文,已经安装好了ECharts,开始封装组件方便使用。一、封装echart图标钩子首先应用我们之前学习的钩子方式,在hooks目录下创建一个名为useECharts.js的文件,用于封装ECharts的逻辑:import{ref,onMo......
  • Vue 3指令与事件处理
    title:Vue3指令与事件处理date:2024/5/2518:53:37updated:2024/5/2518:53:37categories:前端开发tags:Vue3基础指令详解事件处理高级事件实战案例最佳实践性能优化第1章Vue3基础1.1Vue3简介Vue3是一个由尤雨溪(尤大)领导的开源JavaScript框架,它专......
  • 基于python+django框架旅游景区景点购票系统设计与实现(源码+LW+安装+基础课)
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、P......
  • react19.0.0 仓库构建
    react19.0.0仓库构建运行指令npmrunbuild报以下错误panminxiang@Macreact%npmrunbuild>build>node./scripts/rollup/build-all-release-channels.jsBUILDINGreact.development.js(node_dev)COMPLETEreact.development.js(node_dev)BUILDINGreac......
  • Vue3实战笔记(40)—组件逻辑复用:自定义Hooks的完全指南
    文章目录前言一、状态管理二、副作用处理三、生命周期钩子总结前言自定义Hooks是Vue3中的一个重要特性,它允许您创建可重用的函数,以便在组件之间共享状态和逻辑。以下是一些关于自定义Hooks的常见用法。一、状态管理使用reactive或ref来创建响应式数据,并在组件中......
  • vue的生命周期
    Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载DOM、渲染、更新、卸载等一系列过程。Vue提供了一系列生命周期钩子(或称为生命周期方法),允许我们在不同阶段添加自己的代码。以下是Vue组件的主要生命周期钩子:1.**创建阶段(Creation):**  -`be......
  • Django应用创建到启动的简单示例
    一、系统环境和前置安装Ubuntu系统192.168.2.101,客户端192.168.2.100python3及虚拟环境管理库python3-venv创建项目文件创建djangoweb项目配置ALLOW_HOSTS=['*']二、创建并注册app创建django-adminstartappapp1注册app修改项目配置文件settings.py,在INSTALLED_APPS......
  • vue指令
    内容渲染指令v-html 指令用于将包含HTML代码的字符串作为HTML插入到元素中,从而实现动态渲染HTML内容。条件渲染指令v-show和v-if区别及其使用场景v-show1.作用:控制元素显示隐藏2.语法:v-show="表达式"表达式值true显示,false隐藏3.原理:切换display:none控......