vue添加页面 + django + 反序列化

vue与django交互,vue页面添加对应关系图

在这里插入图片描述‘’’
django视图文件与vue代码关系对应图
在这里插入图片描述
反序列化图

在这里插入图片描述

### 结合Vue.js与Django进行Web开发 #### 创建项目结构 为了有效地将Vue.js前端框架与Django后端相结合,在构建应用程序之前规划好项目的目录结构至关重要。通常建议保持前后端分离的方式,即把Vue.js应用作为独立的部分处理,而Django则专注于API服务提供。 #### 设置静态文件和模板路径 为了让Django能够识别并服务于Vue编译后的资源文件(如JavaScript、CSS),需配置`settings.py`中的STATICFILES_DIRS以及TEMPLATES选项来指向正确的文件夹位置[^1]。 ```python import os from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent # Static files (CSS, JavaScript, Images) STATIC_URL = '/static/' STATIC_ROOT = BASE_DIR / 'static' STATICFILES_DIRS = [ BASE_DIR / "frontend/dist", # Vue build output directory ] # Templates configuration TEMPLATES = [ { ... 'DIRS': [os.path.join(BASE_DIR, 'templates')], ... }, ] ``` #### 安装必要的依赖包 通过pip安装django-cors-headers中间件以便解决跨域资源共享(CORS)问题;同时利用npm管理前端所需的库,比如vue-cli脚手架工具创建单页面应用(SPA)[^2]。 ```bash pip install django-cors-headers npm install -g @vue/cli ``` #### 配置CORS Headers 编辑`INSTALLED_APPS`列表加入'corsheaders'模块,并调整MIDDLEWARE设置确保允许来自特定源的请求访问API接口[^4]。 ```python INSTALLED_APPS = [ ... 'corsheaders', ... ] MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', # Add this line at top ... ] CORS_ORIGIN_ALLOW_ALL = True # For development only; set False in production and specify origins. ``` #### 构建RESTful API 采用DRF(Django Rest Framework)快速搭建起一套完整的REST风格的服务层供Vue调用获取数据。定义序列化器(serializers),视图(viewsets), 路由(routers)等组件完成CRUD操作逻辑实现[^3]. ```python # serializers.py from rest_framework import serializers from .models import Book class BookSerializer(serializers.ModelSerializer): class Meta: model = Book fields = '__all__' # views.py from rest_framework import viewsets from .serializers import BookSerializer from .models import Book class BookViewSet(viewsets.ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializer # urls.py from django.urls import path, include from rest_framework.routers import DefaultRouter from .views import BookViewSet router = DefaultRouter() router.register('books', BookViewSet) urlpatterns = [ path('', include(router.urls)), ] ``` #### 前端部分:Vue实例初始化 在Vue工程里可以通过axios发起HTTP请求连接至上述建立好的Django REST API拉取所需的数据展示给用户。记得要根据实际情况修改baseURL参数匹配服务器地址. ```javascript // main.js import axios from 'axios'; const apiClient = axios.create({ baseURL: `http://localhost:8000/api`, // Replace with your server URL headers: { Accept: 'application/json' } }); new Vue({ el: '#app', render(h){ return h(App); }, created(){ apiClient.get('/books/') .then(response => console.log(response.data)) .catch(error => console.error(error)); } }) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值