【JavaScript源代码】vue前端和Django后端如何查询一定时间段内的数据.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
vue前端和Django后端如何查询一定时间段内的数据 在开发过程中经常会遇到筛选查询之类的功能,比如查询某一个时间段内的数据而非所有数据。 这样我们就需要向后端发送时间段的参数,然后在后端处理查询。 这里以Django后端和vue前端的简单例子来记录大致实现。 这里是一些简单的数据重要的是date,我们需要根据日期来筛选返回到前端。 models.py class CountDownSign(models.Model): name = models.CharField(max_length=1000) date = models.DateField() sign 在开发Web应用时,前后端的数据交互是必不可少的,特别是在涉及到特定条件的查询时,如按日期范围筛选数据。本文将详细介绍如何使用Vue.js前端框架与Django后端框架配合,实现查询一定时间段内的数据。 我们来看Django后端部分。在Django中,我们通常使用ORM(Object-Relational Mapping)进行数据库操作。在`models.py`文件中,定义了一个名为`CountDownSign`的模型,包含`name`、`date`和`sign`三个字段,其中`date`字段用于存储日期信息,类型为`DateField`。 ```python class CountDownSign(models.Model): name = models.CharField(max_length=1000) date = models.DateField() sign = models.CharField(max_length=200) ``` 接着,在`serializers.py`中,我们创建了一个序列化器`CountDownModelSerializer`,它继承自`ModelSerializer`,用于处理模型实例到JSON数据的转换以及反向转换。这样,前端可以方便地接收和发送数据。 ```python from rest_framework import serializers class CountDownModelSerializer(serializers.ModelSerializer): class Meta: model = CountDownSign fields = '__all__' ``` 在`views.py`中,我们使用Django REST Framework的`ModelViewSet`来创建API视图,它提供了对数据库模型的基本CRUD操作。为了支持按日期范围查询,我们添加了一个自定义的POST请求方法`getSE`,它接收前端传来的`start`和`end`日期参数,然后使用Django的查询表达式`filter(date__range=(start, end))`来筛选出指定日期范围内的`CountDownSign`对象。 ```python from rest_framework.viewsets import ModelViewSet from rest_framework.response import Response from rest_framework import status from .models import CountDownSign from .serializers import CountDownModelSerializer class CountDownViewSet(ModelViewSet): queryset = CountDownSign.objects.all() serializer_class = CountDownModelSerializer search_fields = ('id', 'name', 'sign', 'date') @action(methods=['post'], detail=False) def getSE(self, request, *args, **kwargs): start = request.data.get('start', None) end = request.data.get('end', None) if start and end: obj = CountDownSign.objects.filter(date__range=(start, end)) if obj: ser = CountDownModelSerializer(instance=obj, many=True) return JsonResponse({ 'code': '200', 'msg': '获取数据成功', 'data': ser.data }) else: return JsonResponse({ 'code': '1002', 'msg': '获取失败', }) else: return Response(status=status.HTTP_204_NO_CONTENT) ``` 现在转向Vue.js前端部分。在Vue中,我们可以使用组件和事件来处理用户交互。假设我们有一个日期选择器组件,用户可以选择开始日期和结束日期。当用户选择日期后,我们可以触发一个事件,将这两个日期作为参数发送到后端。 ```html <template> <div class="datePicker"> <div class="block" style="float: left"> <el-date-picker v-model="value1" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" @change="handleChangeStart" ></el-date-picker> </div> <div class="block" style="float: left"> <el-date-picker v-model="value2" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" @change="handleChangeEnd" ></el-date-picker> </div> <button @click="searchByDateRange">查询</button> </div> </template> <script> export default { data() { return { value1: '', value2: '', }; }, methods: { handleChangeStart(date) { this.value1 = date; }, handleChangeEnd(date) { this.value2 = date; }, async searchByDateRange() { const response = await axios.post('/api/countdown/getse', { start: this.value1, end: this.value2 }); if (response.data.code === '200') { console.log('查询结果:', response.data.data); // 处理查询结果 } else { alert('查询失败: ' + response.data.msg); } }, }, }; </script> ``` 在上述Vue组件中,`handleChangeStart`和`handleChangeEnd`用于更新选定的开始和结束日期,而`searchByDateRange`方法则在用户点击“查询”按钮时触发,通过axios库发送POST请求到后端的`/api/countdown/getse`接口,携带`start`和`end`参数。 总结起来,实现Vue前端和Django后端查询一定时间段内的数据,主要涉及以下几个步骤: 1. 在Django模型中定义包含日期字段的数据结构。 2. 创建Django序列化器以处理JSON数据。 3. 在Django视图中定义一个接收日期范围并执行查询的方法。 4. 在Vue组件中使用日期选择器组件,监听日期变化并发送请求到后端。 通过这种方式,我们可以实现前后端协同,根据用户选择的时间段动态查询并展示数据,为用户提供更高效、更具针对性的筛选功能。













剩余7页未读,继续阅读


- 粉丝: 1w+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- info.php 测试文件
- homebrew操作脚本
- Java项目:基于SSM框架实现的在线投稿管理系统【ssm+B/S架构+源码+数据库+毕业论文】
- opencv-python-4.8.0.76.tar.gz
- Huawei S5735S-H-V200R021C00SPC100
- [附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+vue实现的在线投稿管理系统,推荐!
- 基于Spring Boot家庭装修饰品推荐与分析系统_pdgn10rg.zip
- Huawei S5735S-H-V200R024SPH121
- 创意版-Hello World-网页
- Proteus软件使用中常见问题及解决策略
- 高中年会演讲稿,学生会活动组织
- SSM框架中基于MyBatis的分页查询实现方案
- 《SpoilerAL6.4版本文件资源包》
- opencv_python-4.8.0.76-cp37-abi3-win32.whl
- opencv_python-4.8.0.76-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- opencv_python-4.8.0.76-cp37-abi3-macosx_11_0_arm64.whl


